2013-11-15 7 views
-2

Я использую javascript для проверки веб-формы для отправки в базу данных, я закодировал форму и проверку, но она не работает.JavaScript Validation Not Alerting User

Когда форма заполнена и она действительна, она предназначена для перехода на страницу успеха в отдельном HTML-файле, но если она недействительна, текст в форме становится красным, появляется окно с сообщением и предупреждения что он недействителен. В Chrome и IE, похоже, отображается ошибка, но в любом случае перейдите на страницу успеха. Ящик сообщений тоже не появляется, я вижу, что текст становится красным, прежде чем он перейдет на страницу успеха.

Я хотел знать, как это исправить. Я искал в Интернете, но не нашел решения.

У меня есть функция, называемая validateForm(), которая представляет собой ряд операторов if, проверяющих, являются ли поля правильными, а если они не являются, переменная с именем «result» установлена ​​в false, в конце она отправляет и возвращает переменную 'result'.

код для моей кнопки отправки здесь:

<input type="submit" name="submit" value="Submit" onclick="return validateForm();" /> 

Успех Страница устанавливается в виде кода как «действие».

Вот мой Validate форма:

function validateForm(){ 
    var result = true; 
    var msg = ""; 

    if(document.ExamEntry.name.value==""){ 
     msg+="You must enter your Name \n"; 
     document.ExamEntry.name.focus(); 
     document.getElementById('name').style.color="red"; 
     result = false; 
    } 

    if(document.ExamEntry.subject.value==""){ 
     msg+="You must enter the Subject \n"; 
     document.ExamEntry.subject.focus(); 
     document.getElementById('subject').style.color="red"; 
     result = false; 
    } 

    if(document.ExamEntry.examNumber.value=="") 
    { 
     msg+="You must enter the Examination Number \n"; 
     document.ExamEntry.examNumber.focus; 
     document.getElementById('examnumber').style.color="red"; 
     result = false; 
    } 

    if(document.ExamEntry.examNumber.value.length!=4) 
    { 
     msg+="Your Examination Number must be 4 characters long \n"; 
     document.ExamEntry.examNumber.focus; 
     document.getElementById('examnumber').style.color="red"; 
     result = false; 
    } 

    var lvlmsg=""; 
    for(var i=0; i < document.ExamEntry.level.length; i++) 
     { 
      if(document.ExamEntry.level[i].checked) 
      { 
       lvlmsg = document.ExamEntry.level[i].value; 
       break; 
      } 
     } 
    if(lvlmsg=="") 
     { 
      msg+="You Must Indicate Your Level"; 
      result=false; 
      document.getElementById('radioButtons').style.color="red"; 
     } 
    else 
     { 
      alert(lvlmsg); 
     } 

    if(msg==""){ 
     return result; 
    } 
    else{ 
     alert(msg); 
     return result; 
    } 
} 
+1

Можем ли мы увидеть код validateForm? – jameslafferty

+1

Функция validateForm() должна возвращать значение false, если проверка не завершена – Surender

+0

U должен добавить ваш validateForm(), чтобы завершить ваш вопрос –

ответ

0

Я создал форму без радиокнопок и изменил вызов функции.

Я думаю, что ошибка здесь:

<form name="ExamEntry" method="POST"> 
    <input type="text" id="name" name="name" /> 
    <input type="text" id="subject" name="subject" /> 
    <input type="text" id="examnumber" name="examNumber" /> 
    <input type="submit" name="submit" value="Submit" onlick="return validateForm()" /> 
</form> 

Я изменил вызов функции onsubmit (потому что я считаю, что лучше практика) и return validateForm() просто validateForm(). Зачем вам нужен оператор return? Не имеет смысла для меня.

http://jsfiddle.net/rcsole/cqy7q/

+0

Я использовал это, потому что мне был предоставлен шаблон, который мне пришлось адаптировать, он работал, но они хотели еще несколько полей. Он все еще не работает, хотя – user2997100

+0

работает на моем jsfiddle. в чем проблема? – rcsole

+0

Чтобы избежать изменения страницы, вы можете использовать preventDefault(). Как и в случае, если это действительно, если это окно. – rcsole