возникли проблемы при проверке формы с использованием JavaScript - PullRequest
0 голосов
/ 09 марта 2012

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

Пожалуйста, кто-нибудь, помогите мне решить этот 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>

Ответы [ 5 ]

1 голос
/ 09 марта 2012

Вам нужно немного изменить свой код.Проблема в том, что 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 голосов
/ 09 марта 2012

Вам необходимо добавить проверку для значения в 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;
0 голосов
/ 09 марта 2012

Я не совсем уверен, почему это не сработало, но функция вообще не вызывается. Может быть 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 голосов
/ 09 марта 2012

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

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 голосов
/ 09 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...