Проверка Javascript - PullRequest
       0

Проверка Javascript

0 голосов
/ 21 февраля 2011

Пожалуйста, помогите мне.Проверка не работает

<script type="text/javascript"  src="javascript.js">
function validation()
{
    var fname=document.forms["form1"]["fname"].value;
    var lname=document.forms["form1"]["lname"].value;
    var idnumber=document.forms["form1"]["idnumber"].value;
    var email=document.forms["form1"]["email"].value;
    var atpos=email.indexOf("@");
    var dotpos=email.lastIndexOf(".");
    var address=document.forms["form1"]["address"].value;
    var phonenumber=document.forms["form1"]["phonenumber"].value;

    if (fname==null || fname=="")
    {
        alert("Name should be entered correctly");
        return false;
    }

    if (lname==null || lname=="")
    {
        alert("Name should be entered correctly");
        return false;
    }

    if (isNaN(idnumber))
    {
        alert("Please enter a valid id number");
        return false;
    }

    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
    {
        alert("Please enter a valid e-mail address");
        return false;
    }

    if(address==null || address=="")
    {
        alert("Please insert your address");
        return false;
    }
    if (isNaN(phonenumber))
    {
        alert("Please enter a valid phone number");
        return false;
    }


}
</script>
<form name="form1" action="validation.php" method="post"  onsubmit=" return validation(this);return false"> 
   Firstname:<input type="text" name="fname"><br/>
   Lastname:<input type="text" name="lname"><br/>
   Nation ID Number:<input type="text" name="idnumber"  minlength="8"maxlength="8"><br/>
   Email address: <input type="text" name="email"><br/>
   Address:<input type="text" name="address"><br/>
   Pnone number:<input type="text" name="phonenumber"><br/>
   <input type="reset" name="reset" value="reset">
   <input type="submit" name="submit" value="submit">
</form>

1 Ответ

3 голосов
/ 21 февраля 2011

Существует несколько проблем с этим кодом:

  • Вы действительно не должны использовать один и тот же элемент <script> как для вызова src="javascript.js", так и для одновременного объявления функции. Используйте отдельные элементы, например:

    <script type="text/javascript"  src="javascript.js"></script>
    <script type="text/javascript">
    function validation()
    {
        ...
    }
    </script>
    
  • В элементе <form> есть избыточный ;return false. Форма будет принимать значение от return validation(this), все, что после этого будет игнорироваться. Кроме того, нет необходимости ";" при использовании встроенного JavaScript.

  • Вы передаете this в качестве аргумента функции validation(), но проверка не ожидает аргумента. Должно быть:

    function validation(oForm)

  • Если вы уже передаете this, почему бы не использовать его? this является ссылкой на сам элемент, поэтому для функции проверки это ссылка на форму. Поэтому не нужно называть форму.

    <form action="validation.php" method="post" onsubmit="return validation(this)"> 
    

И ссылки в функции будут:

function validation(oForm)
{
    var fname=oForm["fname"].value;
    var lname=oForm["lname"].value;
}

Эти изменения могут решить вашу проблему. Я проверю код дальше, чтобы увидеть, есть ли что-то еще.

EDIT:

Я проверил проверку сейчас, и она работает. Единственная необходимая модификация - это удаление scr=validation.js из вашего <SCRIPT> тега. Для этого используйте отдельные теги, как я и предлагал.

Но я настоятельно рекомендую вам рассмотреть другие вопросы, о которых я упоминал.

Также, другие предложения, касающиеся самой проверки:

  • Для буквенно-цифровых полей не нужно проверять null, достаточно только "". Вы можете просто использовать:

        if (lname=="")
    
  • Сообщения об ошибках «Имя» и «Фамилия» совпадают. Это запутает пользователей.

  • Не проверяйте номера телефонов как числовые. Помните, что "(407) 234-5678" - это совершенно допустимый номер телефона, хотя он не пройдёт тест. Если у вас нет веских причин считать его числовым (автоматический набор?), Оставьте его как обычное текстовое поле.

  • В поле National ID: в HTML нет minlength. Только maxlength

  • isNaN(idnumber) вернет true, если значение будет пустым. А также если длина <8. Я предполагаю, что это обязательное поле требуемой длины, поэтому вы должны использовать: </p>

        if (isNaN(idnumber) || idnumber.length != 8)
        {
            alert("Please enter a valid id number");
            return false;
        }
    
  • Для всех ваших тестов, подумайте об обрезке значений. В настоящее время ввод, подобный "" (только пробелы), пройдет ваш тест. Javascript не имеет встроенной функции обрезки, но это можно сделать с помощью этого:

    функция обрезки (текст) {

    return texto.replace(/^\s*|\s*$/g, "");
    

    }

И используется так:

var fname=trim(oForm["fname"].value);
  • Для ясности используйте явное return true; в validation() после всех успешных испытаний.

Вот предлагаемый код после всех изменений:

    <script type="text/javascript" scr="validation.js"></script>
    <script type="text/javascript">
    function validation(oForm)
    {
        var fname       = trim(oForm["fname"].value);
        var lname       = trim(oForm["lname"].value);
        var idnumber    = trim(oForm["idnumber"].value);
        var email       = trim(oForm["email"].value);
        var atpos       = email.indexOf("@");
        var dotpos      = email.lastIndexOf(".");
        var address     = trim(oForm["address"].value);
        var phonenumber = trim(oForm["phonenumber"].value);

        if (fname=="")
        {
            alert("First name should be entered");
            return false;
        }

        if (lname=="")
        {
            alert("Last name should be entered");
            return false;
        }

        if (isNaN(idnumber) || idnumber.length != 8)
        {
            alert("Please enter a valid id number");
            return false;
        }

        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
        {
            alert("Please enter a valid e-mail address");
            return false;
        }

        if(address=="")
        {
            alert("Please insert your address");
            return false;
        }
        if (isNaN(phonenumber))
        {
            alert("Please enter a valid phone number");
            return false;
        }

        return true;

    }
    function trim( texto ) {

        return texto.replace(/^\s*|\s*$/g, "");

    }

    </script>
    <form name="form1" action="validation.php" method="post" onsubmit="return validation(this)"> 
       Firstname:<input type="text" name="fname"><br/>
       Lastname:<input type="text" name="lname"><br/>
       Nation ID Number:<input type="text" name="idnumber" maxlength="8"><br/>
       Email address: <input type="text" name="email"><br/>
       Address:<input type="text" name="address"><br/>
       Pnone number:<input type="text" name="phonenumber"><br/>
       <input type="reset" name="reset" value="reset">
       <input type="submit" name="submit" value="submit">
    </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...