2015-06-10 1 views
0

Я создал простое веб-приложение, которое имеет 2 варианта формы, когда пользователь делает свой выбор с каждого, я хочу показать alert, показывая им выбор, который они сделали.Javascript: отображать предупреждение при проверке формы?

Я попытался выполнить это ниже, но когда обе формы проверены, отображается предупреждение не отображается. Что мне не хватает? Примечание см комментарий:

//BELOW IS NOT BEING DISPLAYED BUT SHOULD BE 

Текущий код:

<!DOCTYPE html> 
<html> 
<body> 

<h1>Calculator</h1> 

<p>Select the importance of this:</p> 

<form method="get"> 
    <input type="checkbox" name="Severity" value="negligible"> Negligible<br> 
    <input type="checkbox" name="Severity" value="minor"> Minor<br> 
</form> 

<p>Select the Probability of this:</p> 

<form method="get"> 
    <input type="checkbox" name="Probability" value="improbable"> Improbable<br> 
    <input type="checkbox" name="Probability" value="remote"> Remote<br> 
    <input type="checkbox" name="Probability" value="occasional"> Occasional<br> 

<button onclick= "analyseThis()"> Analyse this </button> <br> 



<script> 

function analyseThis(){ 

    var severities = document.getElementsByName('Severity'); 
    var probs = document.getElementsByName('Probability'); 

    var severity = undefined; 
    for(var i = 0; i < ages.length; i++) 
    { 
    if(severities[i].checked) 
    { 
     age = severities[i].value; 

    } 
    } 

    var probability = undefined; 
    for(var i = 0; i < probs.length; i++) 
    { 
     if(probs[i].checked) 
     { 
     probability = probs[i].value; 

     } 
    } 

    //BELOW IS NOT BEING DISPLAYED BUT SHOULD BE 
    alert("Severity is: " + age + "Probability is: " + probability); 

} 

</script> 


</body> 
</html> 
+0

Вы можете использовать JQuery для проверки формы и отправки. – Si8

ответ

1

Я хотел бы использовать JQuery и использовать функцию нажатием кнопки на кнопку.

Вот пример:

$(document).ready(function() { 
    $("{form id/class button id/class OR button id/class}").click(function(e) { 
     e.preventDefault(); 
     //perform validation 

     //if everything is good... 
     $("{form id/class}").submit(); 
    }); 
}); 
0

У вас ошибка в коде - вы проверяете в цикле ages.length, который, вероятно, не определено (не ages переменной в коде) в первом цикле и код выполнение должно прекратиться.

Рабочий JSBin код здесь: http://jsbin.com/yelihugune/1/

0

У Вас есть ошибка в вашем коде.

for(var i = 0; i < ages.length; i++) 
{ 
    if(severities[i].checked) 
    { 
     age = severities[i].value; 

    } 
} 

«возрасты» еще не определена в коде, ни «возраст». Это приведет к ошибке, останавливая работу вашего кода. Вот почему предупреждение не идет.

Объявить массив возрастов.

1

Что-то смешное происходит:

  1. Ваша функция analyseThis() делает дозвонились, но есть ошибка, когда она оценивается.

  2. Форма на странице «отправлена», поэтому страница перезагружается , и вы никогда не увидите ошибку.

Чтобы предотвратить страницу от перегрузки (так что вы можете увидеть свою ошибку) это сделать:

  1. Pass в event объекте к вашему analyseThis() функции

    из onclick левшей:

    <button onclick= "analyseThis(event)"> Analyse this </button> 
    
  2. Сделайте свой анализСледующим() принять объект события и вызвать.preventDefault() на нем так, что страница не обновляется:

    function analyseThis(e){ 
        e.preventDefault() 
        // the rest of your function body here.... 
    } 
    

После этого вы увидите основной вывод ошибок в консоли:

ReferenceError: ages is not defined (line 33, col 17) 
for(var i = 0; i < ages.length; i++) 

Если вы хотите, чтобы форма была отправлена, просто не забудьте удалить вызов e.preventDefault() после отладки кода.

+0

Спасибо, я исправил эту ошибку (теперь исправление для исправления массива), но окно предупреждения по-прежнему не отображается – user4929435

+0

Есть ли другие ошибки, отображаемые в консоли браузера (вы можете нажать F12, чтобы довести консоль до)? –

Смежные вопросы