2012-04-18 23 views
5

Próbuję sprawdzić, czy długość pola tekstowego jest co najmniej pewnej długości. tutaj jest mój kod:sprawdzanie długości pola tekstowego

<form name="form2" id="form2" onsubmit="return validate()"> 
length 4: <input type="text" name = "t" id="t" /> 
<input type="button" name="submit" value="submit" /> 
</form> 

<script> 
function validate() { 
    document.write("good"); 
    submitFlag = true; 
    if(document.form2.t.value.length!=4){ 
     submitFlag=false; 
     alert("ivalid length - 4 characters needed!"); 
    } 
    return submitFlag; 
} 
</script> 

po kliknięciu przedstawienia, nic się nie dzieje.

+1

Ponownie używasz 'document.write()' w niewłaściwym kontekście ... – Teemu

Odpowiedz

0

Prawdopodobnie chcesz większy lub równy (> =), zamiast nie równa się (! =) Jeśli chcesz „przynajmniej pewną długość”

4

zmienić złożyć przycisk, aby type = „submit” . Formularz nigdy nie jest wysyłany, więc funkcja sprawdzania poprawności nie jest wywoływana.

0

Twój przycisk powinien być

<input type="submit" name="submit" value="submit" /> 

onsubmit inaczej zdarzenie nie nastąpi. Ponadto użyj debugowania console.log() zamiast document.write().

0

mam spotted różne błędy:

  • nie używać document.write() będzie go zastąpić aktualnie otwartego dokumentu
  • form2 ma własność document. Możesz użyć document.forms.form2, ale tutaj jest prostszy.
  • Twoje wyrażenie nie sprawdza "co najmniej 4", sprawdza "dokładnie 4".
  • Twój przycisk nic nie przesłał. Zmień go <button type="submit"> lub <input type="submit" />
  • można określić pattern=".{4}" dla wejścia lub nadać mu atrybut
+0

1. czego używam na miejscu? po prostu napisz wiadomość do div? 2. form2 to nazwa/identyfikator formularza. Domyślam się, że ta tutorialowa książka, której używam, musi być naprawdę stara ... 3. Czy jest jakaś korzyść z używania javascript dla minimalnej/maksymalnej długości? – droidus

+0

Tak, po załadowaniu dokumentu musisz manipulować DOM; na przykład manipuluj wewnętrznym tekstem elementu div. @ Walidacja HTML5: Zaletą jest to, że nie będziesz potrzebował javascript (w nowoczesnych przeglądarkach). BTW: min/max są tylko dla liczb – Bergi

0

Jest kilka kwestii, które trzeba required. 1) Musisz wprowadzić swój przycisk przesyłania i 2) musisz usunąć swoje oświadczenie document.write(). Zmienić swój kod do następującego (or see this jsFiddle):

<form name="form2" id="form2" onsubmit="return validate()"> 
length 4: <input type="text" name = "t" id="t" /> 
<input type="submit" name="submit" value="submit" /> 
</form> 

<script> 
function validate() { 
    submitFlag = true; 
    if(document.form2.t.value.length!=4){ 
     submitFlag=false; 
     alert("ivalid length - 4 characters needed!"); 
    } 
    return submitFlag; 
} 
</script>​​​​ 

Jesteś dość blisko, ale można korzystać z niektórych Clean-up na tym kodem (Uwaga: nie przewiduje w ogóle).

1

typ Wejście musi być „submit”

<form name="form2" id="form2" onsubmit="return validate()"> 
    length 4: <input type="text" name = "t" id="t" /> 
    <input type="submit" name="submit" value="submit" /> <!--INPUT TYPE MUST BE SUBMIT --> 
    </form> 

    <script> 
    function validate() { 
     document.write("good"); 
     submitFlag = true; 
     if(document.form2.t.value.length!=4){ 
      submitFlag=false; 
      alert("ivalid length - 4 characters needed!"); 
     } 
     return submitFlag; 
    } 
</script> 
0

Należy również dodać atrybut MaxLength do wprowadzania tekstu, to pomoże użytkownikowi.

<form name="form2" id="form2" onsubmit="return validate();"> 
    <input type="text" name="t" id="t" maxlength="4"/> 
    <input type="submit" name="submit" value="submit"/> 
</form> 

<script type="text/javascript"> 
    function validate() 
    { 
     if (document.getElementById("t").value.length != 4) 
     { 
      alert("Invalid length, must be 4 characters"); 
      return false; 
     } 
     return true; 
    } 
</script> 
Powiązane problemy