2012-03-09 3 views
0

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

Пожалуйста, помогите с этим, чтобы решить этот JavaScript.

function validateform(data) 
{ 
    var validField = ""; 
    var namevalid=/^[a-zA-Z ]+$/; 
    if(data.name.value == ""){validField += "- Please Enter Your Name\n";} 
    else if(data.name.value.search(namevalid)==-1){validField += "- Entered Name contains Numbers or Symbols\n";} 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
     return true; 
     } 
     validField += "- Please Enter A Valid E-mail Address\n"; 
     alert(validField); 
     return false; 
} 


<form name="data" onsubmit="return validateform(this);" action="some.php" method="post"> 
<div> 
<label>Name:</label><input type="text" id="name" name="name" size="20" maxlength="20"/></div> 

<div> 
<label>E- mail Address:</label><input type="text" id="email" name="email" size="20" maxlength="30"/></div> 

<input type="submit" name="submit" value="Start Now!"/> 
</form> 

ответ

0

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

function validateform(data) { 
    var validField = ""; 
    var isValid = false; 
    var namevalid = /^[a-zA-Z ]+$/; 
    if (data.name.value == "") { 
     validField += "- Please Enter Your Name\n"; 
    } 
    else if (data.name.value.search(namevalid) == -1) { 
     validField += "- Entered Name contains Numbers or Symbols\n"; 
     } 
    if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value))) { 
     validField += "- Please Enter A Valid E-mail Address\n"; 
    }; 
    if (validField == "") { 
     isValid = true; 
    } 
    if (!isValid) { 
     alert(validField); 
    } 
    return isValid; 
} 
0

Вам необходимо разместить функцию между <script> тегами, кроме того, что это выглядит хорошо для меня.

+0

Вероятно, он отправил фрагмент , иначе он увидит все JS на экране и узнает, что что-то не так. – Richard

1

Вам не нужно менять код. Проблема заключается в том, что function validateform() всегда возвращает false независимо от проверки подлинности электронной почты. Проверьте ниже рабочую страницу вместе с кодом. Вы должны добавить предупреждение и вернуть false в блок else {}.

<html> 
<head> 
<script type="text/javascript"> 
function validateform(data) 
{ 
    var validField = ""; 
    var namevalid=/^[a-zA-Z ]+$/; 
    if(data.name.value == ""){validField += "- Please Enter Your Name\n";} 
    else if(data.name.value.search(namevalid)==-1){validField += "- Entered Name contains Numbers or Symbols\n";} 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
     return true; 
    } 
    else { 
     validField += "- Please Enter A Valid E-mail Address\n"; 
     alert(validField); 
     return false; 
     } 
} 
</script> 
</head> 
<body> 
<form name="data" onsubmit="return validateform(this);" action="some.php" method="post"> 
<div> 
<label>Name:</label><input type="text" id="name" name="name" size="20" maxlength="20"/></div> 
<div> 
<label>E- mail Address:</label><input type="text" id="email" name="email" size="20" maxlength="30"/></div> 

<input type="submit" name="submit" value="Start Now!"/> 
</form> 
</body> 
</html> 
0

Я не совсем уверен, почему это не работает, но функция вообще не называется. Может быть onsubmit.

Почему вы не используете библиотеку jQuery? Посмотрите на этот пример, это работает отлично: http://jsfiddle.net/tR3XQ/1/

$("form[name=data]").submit(function(){ 

    var validField = ""; 
    var namevalid=/^[a-zA-Z ]+$/; 
    if(data.name.value == ""){validField += "- Please Enter Your Name\n";} 
    else if(data.name.value.search(namevalid)==-1){validField += "- Entered Name contains Numbers or Symbols\n";} 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
     return true; 
    } 
    validField += "- Please Enter A Valid E-mail Address\n"; 
    alert(validField); 
    return false; 

});​ 
0

Вам нужно добавить проверку на значение в validField для проверки электронной почты, в противном случае он игнорируется

if (validField.length = 0 && /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
    return true; 
} 
validField += "- Please Enter A Valid E-mail Address\n"; 
alert(validField); 
return false; 
Смежные вопросы