2017-02-14 41 views
1

Это простой код, и я не знаю, где я ошибся. Проверка имени работает, если имя не введено, но оно не показывает результат, когда действительный имя введено.Проверка Javascript (ввод не отображается после нажатия Отправить)

Вот мой код:

Я просто новый в HTML и JavaScript, надеясь, я бы получить помощь здесь. Благодарим вас

function checkname(form) { 
 
    var eobj = document.getElementById('MITname'); 
 
    var jname = form.Name.value; 
 
    var error = false; 
 

 
    eobj.innerHTML = ''; 
 

 
    if (jname == '') { 
 
     error = "Name is required!"; 
 
     var error2 = error.fontcolor("red"); 
 

 
    } 
 
    if (error) { 
 
     if (hasFocus == false) { 
 
     form.Name.focus(); 
 
     hasFocus = true; 
 
     } 
 
     eobj.innerHTML = error2; 
 
     return false; 
 
    } 
 
    return true; 
 
    } 
 

 
    function showinput() { 
 
    document.getElementById('namedisplay').innerHTML = document.getElementById('MITname').value; 
 
    } 
 

 

 
    function validate() { 
 
    hasFocus = false; 
 
    var form = document.forms['form']; 
 
    var ary = [checkname]; 
 
    var rtn = true; 
 
    var z0 = 0; 
 
    for (var z0 = 0; z0 < ary.length; z0++) { 
 
     if (!ary[z0](form)) { 
 
     rtn = false; 
 
     } 
 
    } 
 
    return rtn; 
 
    }
<form action="" name="form" onsubmit="return validate()"> 
 
    <tr> 
 
    <td align="right">Name:<font color="red">*</font> 
 
    </td> 
 
    <td> 
 
     <input type="text" name="Name" /> <span id="MITname"> </span> 
 
    </td> 
 
    </tr> 
 
    <br/> 
 
    <input type="submit" value="Submit" onclick="showinput()" /> 
 
    <br/> 
 
    <label>Your input:</label> 
 
    <p><span id="namedisplay"></span> 
 
    </p> 
 
</form>

ответ

0

Несколько вопросов здесь. (Также добро пожаловать в веб-разработку!)

Во-первых, вы никогда не создаете переменную hasFocus. Таким образом, вы никогда не проверяете, верно ли это/false или нет.

Во-вторых, где вы создаете error2 означает, что он будет доступен только в пределах if() блока он был создан. Так, в следующем if(error) блоке при попытке доступа к нему, он будет возвращать undefined.

В-третьих, при создании error вы устанавливаете значение false, что указывает на тип Boolean, но затем устанавливает его значение в String, что определенно не является логическим.

В-четвертых, линия var ary = [checkname]; меня смущает. Я понимаю, что вы пытаетесь преобразовать имя (из ввода?) В массив, но это не способ сделать это. Вы можете получить доступ к каждому символу имени с помощью string.charAt(index), поэтому создание массива действительно не требуется.

В-пятых, ваш validate() функция в целом очень неясно. Я не знаю, что вы пытаетесь сделать. Похоже, ваш источник обучения может ввести вас в заблуждение, или вы не обращали на него пристального внимания.

Я мог бы продолжать, однако те (среди прочего) проблемы действительно затрудняют точное определение того, что происходит не так, не врываясь в него. Я не хочу писать это для вас, и поэтому мое предложение состояло в том, чтобы начать заново, и, возможно, проверить еще несколько учебников, возможно, из другого источника. (Разный канал для YouTube и т. Д.)

+0

Я предполагаю (предположим), что функция validate должна создавать массив всех форм, а затем вызывать 'checkname' для каждой формы ... вместо этого он выполняет итерацию по 1 массиву переменных, чтобы вызвать' checkname' – abc123

+1

, это мой первый день в классе и это самоучка .. i я не уверен, что я кодирую, но я собираюсь сделать проверку javascript .. зная, что этот код ужасен, это немного подведет. * sigh * thanks tho, я ценю это. –

+0

@ Гени-сама, не чувствую себя плохо, мы все должны были где-то начинать.То, что я предлагаю сделать, это смотреть некоторые видеоролики «intro to Javascript» онлайн и смотреть на W3 Schools, так как у них отличные вещи для начинающих. – FibreChips

0

Моя проблема - это проверка. Если я введу пустое имя, рядом с текстовым полем «Имя» появится сообщение об ошибке, указывающее, что нужно ввести действительное имя.

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>JAVASCRIPT FORM VALIDATION</title> 
 
\t 
 
    <script type="text/JavaScript"> 
 
     function showMessage() 
 
\t \t { 
 
      var Name = document.getElementById("Name").value; 
 
      displayname.innerHTML= Name; 
 
\t \t \t 
 
\t \t \t var Email = document.getElementById("Email").value; 
 
\t \t \t displayemail.innerHTML= Email; 
 
\t \t \t 
 
\t \t \t var Website = document.getElementById("Website").value; 
 
\t \t \t displaywebsite.innerHTML= Website; 
 
\t \t \t 
 
\t \t \t var Comment = document.getElementById("Comment").value; 
 
\t \t \t displaycomment.innerHTML= Comment; 
 
\t \t \t 
 
\t \t \t var nameerror=''; 
 
\t \t \t var emailerror=''; 
 
\t \t \t var websiteerror=''; 
 
\t \t \t var commenterror=''; 
 
\t \t \t 
 
\t \t \t \t if (displayname.innerHTML=='') 
 
\t \t \t \t { 
 
\t \t \t \t nameerror = 'Please enter a valid name'; 
 
\t \t \t \t return false; 
 
\t \t \t \t } 
 
\t \t \t \t return true; 
 
     } 
 
    </script> 
 
\t 
 
</head> 
 

 
<body> 
 

 
Name: <input type="text" id = "Name"> <span id = "nameerror"> </span> 
 
<br></br> 
 
Email: <input type="text" id = "Email"> 
 
<br></br> 
 
Website: <input type="text" id = "Website"> 
 
<br></br> 
 
Comnent: <textarea cols="35" rows="7" id="Comment"> </textarea> 
 
<br></br> 
 

 
<input type="submit" onclick="showMessage()" value="submit" /> 
 

 
\t \t \t <p>Name: <span id = "displayname"></span> </p> 
 
\t \t \t <p>Email: <span id = "displayemail"></span> </p> 
 
\t \t \t <p>Website: <span id = "displaywebsite"></span> </p> 
 
\t \t \t <p>Comment: <span id = "displaycomment"></span> </p> 
 

 

 
</body> 
 
</html>

0
<form action="" name="form" onsubmit="return validate()"> 
    <tr> 
    <td align="right">Name:<font color="red">*</font> 
    </td> 
    <td> 
     <input type="text" name="Name" /> <span id="MITname"> </span> 
    </td> 
    </tr> 
    <br/> 
    <input type="button" value="Submit" onclick="showinput()" /> 
    <br/> 
    <label>Your input:</label> 
    <p><span id="namedisplay"></span> 
    </p> 
</form> 

Просто удалить тип = «отправить» в вашем коде она представит свою страницу в то время как мыши после нажатия кнопки отправить данные являются изменения в POST, поэтому использовать кнопку как тип