2014-09-17 2 views
0

Я знаю, что есть несколько тем по этой теме, и на самом деле я получил свой код из одного такого потока, но я просто не могу заставить его работать. Я пытаюсь сравнить два поля ввода в форме HTML с помощью javascript.Сравнение входных значений формы

Вот мои JS:

<script> 
function checkform(form1) 
{ 
    if(form1.password.value != form1.passwordConfirm.value) 
    { 
     alert("Passwords must be the same"); 
     form1.password.focus(); 
     return true; 
    } else {return false;} 
} 
</script> 

Вот HTML:

<!Doctype html> 
<script type="C:/wamp/www/Table/" src="javascript.js"></script> 
<form name="form1" action="demo_form.asp"> 
    Username: <input type="text" name="usrname" required oninvalid="this.setCustomValidity('Username cannot be empty.')"> 
    Password: <input type="password" name="password" required oninvalid="this.setCustomValidity('Password cannot be empty')"> 
    Confirm Password: <input type="password" name="passwordConfirm" required oninvalid="this.setCustomValidity('Password  cannot be empty')"> 
    <input type="submit" value="Submit" onClick="return checkform(form1);"> 
</form> 
</html> 

Любая помощь будет удивительным!

Благодаря

Майк

+1

Если вы не имеете возвращенную истина/ложь обращенного – Huangism

+0

Подобно тому, как совет: вместо передачи 'form1' к использованию функции' this.form' делать непосредственно вручит правильный DOM-элемент. Нет необходимости использовать getElementById больше (для самой формы) – newBee

ответ

1

Вам нужно назначить id в форму, и получить это.

Заменить:

<form name="form1" action="demo_form.asp"> 

С:

<form name="form1" action="demo_form.asp" id="myForm"> 

И и это:

function checkform(form1){ 

С этим:

function checkform(){ 
    var form1 = document.getElementById('myForm') 

Вам также нужно переключить свои операторы возврата, чтобы вернуть false, когда PW не совпадают.

Результирующий JS/HTML:

function checkform(){ 
    var form1 = document.getElementById('myForm'); 
    if(form1.password.value != form1.passwordConfirm.value) 
    { 
     alert("Passwords must be the same"); 
     form1.password.focus(); 
     return false; 
    } 
    return true; 
} 
<form name="form1" action="demo_form.asp" id="myForm"> 
    Username: <input type="text" name="usrname" required oninvalid="this.setCustomValidity('Username cannot be empty.')"> 
    Password: <input type="password" name="password" required oninvalid="this.setCustomValidity('Password cannot be empty')"> 
    Confirm Password: <input type="password" name="passwordConfirm" required oninvalid="this.setCustomValidity('Password  cannot be empty')"> 
    <input type="submit" value="Submit" onClick="return checkform();"> 
</form> 

Обратите внимание, как я удалил else вокруг второго оператора возврата. Это не нужно.

+0

и вернуть обратное значение true и false – Huangism

+0

Не нужно, указывая форму имени, она прикрепляется к 'document' – elzi

+0

@elzi: переменная, которая легко перезаписывается. Это всегда хорошая идея, чтобы явным образом получить вашу форму. – Cerbrus

-1

Извлечь return из onclick.

onClick="checkform(form1);"

Смежные вопросы