2013-11-25 3 views
-1

Я пытаюсь проверить форму с помощью JavaScript, Вот мой кодКак правильно проверить форму с помощью javascript.?

<script type="text/javascript"> 
    function prevSubmit(){ 
     var oForm = document.forms[0]; 
     var pass1= oForm.elements["passwd"]; 
     var pass2=oForm.elements["repasswd"]; 
     var flag = 1; 
     if (pass1.value.length>16) { 
      document.getElementById("passError").innerHTML = "password may atleast 16 chars"; 
      flag = 0; 
     } 
     else 
      document.getElementById("passError").innerHTML = ""; 

     if(pass1.value<=16 && pass1.value!=pass2.value) 
     { 
      document.getElementById("passError").innerHTML = "password must be same"; 
      flag = 0; 
     } 
     else 
      document.getElementById("passError").innerHTML = ""; 
     return flag; 
    } 


</script> 

и вот мой элемент формы,

 <form id="registration_form" action="registration.php" method="post" onsubmit="return prevSubmit();"> 
     <p> 
      <label>Name</label> 
      <input type="text" name="name"/> 
      <span id="NameError"></span> 
     </p> 
     <p> 
      <label>Email</label> 
      <input type="text" name="email"/> 
      <span id="emailError"></span> 
     </p> 
     <p> 
      <label>Password</label> 
      <input type="password" name="passwd"/> 
      <span id="passError"></span> 
     </p> 
     <p> 
      <label>Repeat Password</label> 
      <input type="password" name="repasswd"/> 
     </p>    
      <input type="submit" class="button" value="sign up"/> 

     </form> 

, что я пытаюсь сделать, это проверить пароль, если нет совпадение или более 16, затем показать сообщение и предотвратить подачу, но его не работает, почему?

+0

не использовать 1 или 0 для флага ... это не поможет в предотвращении использования представления '' true' false' – muneebShabbir

ответ

2

Использование true и false как значения flag, не 1 и 0. Вы должны вернуть false, чтобы предотвратить подачу, что-либо еще позволяет отправлять.

0

просто "return false" от Javascript метод

<input type="submit" class="button" value="sign up" onclick="javascript:return myFunc();"/> 

function myFunc() 
{ 
return false; 
} 

это основной пример того, как предотвратить представление формы, если мы возвращаем ложь, то браузер/JavaScript двигателя предотвратить дальнейшее распространение события щелчка и подачи предотвращается.

+1

плохих советов переместите его в событие onclick! – epascarello

+0

Да действительно плохо, простота всегда плохая. Простой пример для начинающих всегда плох. да ... и еще одна вещь, эта форма никогда не представится –

+0

Предлагая использование 'javascript:' действительно плохой совет и показывает, что у вас есть навыки начинающих. Знаете ли вы, что цель 'javascript:' находится в onclick? – epascarello

1

Первое сообщение об ошибке не имеет смысла

password may atleast 16 chars 

Во-вторых, ваша вторая проверка ошибок является неправильным

if(pass1.value<=16 && pass1.value!=pass2.value) 

Вы говорите, если значение меньше, что число 16, и оба значения не соответствует.

Почему значение должно быть меньше, чем 16? Чек должен быть просто

if (pass1.value!=pass2.value) 

и как другие предложили использовать истинное/ложное, а не 1 и 0, как truthy значение.

+0

Проверка перед тем, как поймать эту ошибку, если OP не хочет обе ошибки сообщений, чтобы они появлялись, чем это было необходимо. – epascarello

1

Согласен с ответами на вопросы Barmar и epascarello.

Условное условие должно быть выполнено таким образом:

var oForm = document.forms[0]; 
var pass1= oForm.elements["passwd"]; 
var pass2=oForm.elements["repasswd"]; 
var ctrlError = document.getElementById("passError"); 

if (pass1.value.length < 16) { 
    ctrlError.innerHTML = "Password must be at least 16 characters long."; 
    return false; 
} 
else if (pass1.value != pass2.value) { 
    ctrlError.innerHTML = "Passwords do not match."; 
    return false; 
} 
else { 
    ctrlError.innerHTML = ""; 
    return true; 
} 
Смежные вопросы