23. september 2010 - 14:59
Der er
8 kommentarer og 1 løsning
Validering på Select box - koden virker ikke korrekt
Brugren promptes for valg i drop-down boks. Hvis brugeren vælger værdi 1 = Airplane, skal brugeren promptes for at udfylde de efterfølgende tre tilhørende felter (fra, via og flynr.). Hvis brugeren har valgt værdien 2 (Train) eller 3 (Car) skal brugeren bare fortsætte til den næste gruppe-validering. Jeg har lavet en kode, som prompter brugeren for indtastning uanset hvilken værdi, brugeren har valgt. Hvad har jeg gjort forkert i min kode? --- kode start --- // ARRIVAL BY if(isAttending && form.ArrivalBy.value == "") { alert("Please select Travel mode"); return false; } if(isAttending && !document.form.ArrivalBy.SelectedIndex=="1") { if(!isFilled(form.ArrivalFrom)) { alert("Please fill in Arrival from"); form.ArrivalFrom.focus(); return false; } if(!isFilled(form.ArrivalVia)) { alert("Please fill in Arrival via"); form.ArrivalVia.focus(); return false; } if(!isFilled(form.ArrivalFlightNo)) { alert("Please fill in Flight No."); form.ArrivalFlightNo.focus(); return false; } } --- kode stop ---
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
Slettet bruger
23. september 2010 - 15:31
#1
Nok et ! for meget hist og her... For overskuelighedens skyld sku' du ta' og splitte det op med en switch: if (isAttending) switch (document.form.ArrivalBy.SelectedIndex) { case 1: check fly-felter.. break; case 2: check tog-felter.. break; case 3: check bil-felter.. break; default: alert("Please select Travel mode"); return false; }
23. september 2010 - 15:46
#2
Hmm, måske ja. Har ellers virket fint for mig indtil denne med selectedindex...
Slettet bruger
23. september 2010 - 15:56
#3
hov - skal være med lille s forrest (stort I) fik jeg lige øje på : ) - og så er det en integer, ikke en streng.
23. september 2010 - 16:08
#4
Tak. Ændrede til lille s = selectedIndex - men det virker fortsat ikke som det skal, sorry.
Slettet bruger
23. september 2010 - 19:42
#5
Så må vi se noget mere kode...
24. september 2010 - 09:10
#6
OK, her kommer hele koden: // JavaScript Document function isFilled(element) { if(element.value=="") { return false; } else { return true; } } function isReady(form) { var isAttending = !form.Attending.checked; if (!form.Email.value.match(/^.*@\w[\w\.-]*\.[a-z]{2,6}$/)) { alert("Invalid E-mail address! Please re-enter."); form.Email.focus(); return false; } if(isFilled(form.Firstname)==false) { alert("Please fill in First name."); form.Firstname.focus(); return false; } if(isFilled(form.Lastname)==false) { alert("Please fill in Familiy name."); form.Lastname.focus(); return false; } if(isFilled(form.Title)==false) { alert("Please fill in Title (position)."); form.Title.focus(); return false; } if(isFilled(form.Department)==false) { alert("Please fill in Department."); form.Department.focus(); return false; } if(isFilled(form.Country)==false) { alert("Please select Nycomed country."); form.Country.focus(); return false; } if(isFilled(form.Telephone)==false) { alert("Please fill in Telephone No. and include your country code, e.g. +45."); form.Telephone.focus(); return false; } if(isFilled(form.Mobilephone)==false) { alert("Please fill in Mobile phone No. and include your country code, e.g. +45."); form.Mobilephone.focus(); return false; } // PASSPORT if(isAttending && form.Name.value == "") { alert("Please fill in Full name (Passport)"); form.Name.focus(); return false; } if(isAttending && form.PNationality.value == "") { alert("Please fill in Nationality (Passport)"); form.PNationality.focus(); return false; } if(isAttending && form.Dateofbirth.value == "") { alert("Please fill in Date of birth (Passport)"); form.Dateofbirth.focus(); return false; } if(isAttending && form.Monthofbirth.value == "") { alert("Please fill in Month of birth (Passport)"); form.Monthofbirth.focus(); return false; } if(isAttending && form.Yearofbirth.value == "") { alert("Please fill in Year of birth (Passport)"); form.Yearofbirth.focus(); return false; } if(isAttending && form.Placeofbirth.value == "") { alert("Please fill in Placeofbirth (Passport)"); form.Placeofbirth.focus(); return false; } if(isAttending && form.PassportNo.value == "") { alert("Please fill in Passport No. (Passport)"); form.PassportNo.focus(); return false; } if(isAttending && form.Placeofissue.value == "") { alert("Please fill in Place of issue (Passport)"); form.Placeofissue.focus(); return false; } if(isAttending && form.Expiration.value == "") { alert("Please fill in Expiration date (Passport)"); form.Expiration.focus(); return false; } // ARRIVAL if(isAttending && !document.form.TransferToHotel[0].checked && !document.form.TransferToHotel[1].checked) { alert("Please select whether you need transport to the hotel."); return false; } if(isAttending && !document.form.TransferToHotel[1].checked) { if(!isFilled(form.thirdinput)) { alert("Please fill in Arrival date"); form.thirdinput.focus(); return false; } if(!isFilled(form.ArrivalHour)) { alert("Please fill in Arrival time (hour)"); form.ArrivalHour.focus(); return false; } if(!isFilled(form.ArrivalMinute)) { alert("Please fill in Arrival time (minute)"); form.ArrivalMinute.focus(); return false; } } // ARRIVAL BY if(isAttending && form.ArrivalBy.value == "") { alert("Please select Travel mode"); return false; } if(isAttending && !document.form.ArrivalBy.selectedIndex=="1") { if(!isFilled(form.ArrivalFrom)) { alert("Please fill in Arrival from"); form.ArrivalFrom.focus(); return false; } if(!isFilled(form.ArrivalVia)) { alert("Please fill in Arrival via"); form.ArrivalVia.focus(); return false; } if(!isFilled(form.ArrivalFlightNo)) { alert("Please fill in Flight No."); form.ArrivalFlightNo.focus(); return false; } } // DEPARTURE if(isAttending && !document.form.TransferToAirport[0].checked && !document.form.TransferToAirport[1].checked) { alert("Please select whether you need transport to the airport"); return false; } if(isAttending && !document.form.TransferToAirport[1].checked) { if(!isFilled(form.fourthinput)) { alert("Please fill in Departure date"); form.fourthinput.focus(); return false; } if(!isFilled(form.DepartureHour)) { alert("Please fill in Departure time (hour)"); form.DepartureHour.focus(); return false; } if(!isFilled(form.DepartureMinute)) { alert("Please fill in Departure time (minute)"); form.DepartureMinute.focus(); return false; } if(!isFilled(form.DepartureBy)) { alert("Please select Departuring by"); form.DepartureBy.focus(); return false; } } // ROOM RESERVATION if(isAttending && !document.form.RoomRequired[0].checked && !document.form.RoomRequired[1].checked) { alert("Please select whether you need hotel room reservation"); return false; } if(isAttending && !document.form.RoomRequired[1].checked) { if(!isFilled(form.firstinput)) { alert("Please fill in Check-in date - and verify date referring to your arrival"); form.firstinput.focus(); return false; } if(!isFilled(form.secondinput)) { alert("Please fill in Check-out date - and verify date referring to your departure"); form.secondinput.focus(); return false; } if(isAttending && !document.form.RoomPreference[0].checked && !document.form.RoomPreference[1].checked) { alert("Please select whether you have any room preferences (Smoking or Non-smoking)"); return false; } } if(isAttending && !document.form.DiateryRemarks[0].checked && !document.form.DiateryRemarks[1].checked) { alert("Please select whether you have any dietary preferences (Remarks)"); return false; } // DIETARY if(isAttending && !document.form.DiateryRemarks[1].checked) { if(!isFilled(form.DiateryPreferences)) { alert("Please fill in Dietary Preferences (Text)"); form.DiateryPreferences.focus(); return false; } } return true; }
Slettet bruger
24. september 2010 - 16:47
#7
Nu siger du jo ikke HVAD der er galt... så jeg botaniserer lidt : ) Du sætter isAttending til true hvis feltet Attending IKKE er checked...? isFilled() kan "snydes" ved blot at indtaste et mellemrum... Forbedringsforslag: Hjælpefunktion trim herunder fjerner evt foran- og efterstillede blanke/tabs fra strenge: String.prototype.trim = function(){return this.replace(/^\s+|\s+$/g,"")} function isFilled(element) { if (element.value.trim() == "") return false return true } Og så burde du samle op på alle brugerfejl og fortælle "hele sandheden" på en gang, i stedet for at brugeren skal prøve at submitte igen og igen.. Ahh - Ved nærmere eftersyn, tror faktisk du har misforstået "!" - det betyder "not" Altså: if (!document.form.RoomRequired[0].checked) = hvis IKKE RoomRequired er checked
27. september 2010 - 10:43
#8
Kigger på dit forslag. Det der er galt, er at brugeren kun skal promptes for svar på Via og Flight No. hvis han/hun har fly som transportmiddel. Hvis det er tog eller bil, skal brugeren bare videre til næste indtastningsgruppe.
01. december 2010 - 21:44
#9
-
Vi tilbyder markedets bedste kurser inden for webudvikling