2013-03-07 3 views
0

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

У меня есть все остальное, но этот код ошибки. Я просто не могу понять. Появляется сообщение об ошибке с сообщением «Undefined», которое происходит от функции щелчка для кнопки. Может кто-нибудь помочь?

<html> 
<head> 
    <style> 
     input, label { line-height: 1.5em; } 
    </style> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
    <form> 
     <div> 
      <input type="radio" name="university" value="Ah, we are not on the same site" id="Belfast"> 
      <label for="Belfast">Belfast</label> 
     </div> 
     <div> 
      <input type="radio" name="university" value="Yeah, we are on the same campus" id="Jordanstown"> 
      <label for="Jordanstown">Jordanstown</label> 
     </div> 
     <div> 
      <input type="radio" name="university" value="Ah, we are not on the same site" id="Coleraine"> 
      <label for="Coleraine">Coleraine</label> 
     </div> 
     <div> 
      <input type="radio" name="university" value="Ah, we are not on the same site" id="Magee"> 
      <label for="Magee">Magee</label> 
     </div> 
     <div id="log"></div> 
    </form> 

    <input type="button" value="Continue" id="click"> 
</body> 
</html> 

<script> 
    $(function() { 
     $("#click").click(function() { 
      alert($("input[type=radio]:checked").val()); 
     }) 
    }); 
</script> 
+0

Если нет переключателя, то не будет элемента, значение которого должно быть возвращено. Это должно объяснить предупреждение. Что касается предотвращения подачи, загляните в объект 'event', который вы получите в качестве аргумента для вашего обратного вызова. –

ответ

0

http://jsfiddle.net/VMLg9/

$("#click").click(function(){ 
    my_val = $("input[type=radio]:checked").val(); 

    if(my_val === undefined){ 
     alert("MY_VALIDATION_ERROR"); 
    } else { 
     alert($("input[type=radio]:checked").val()); 
    } 

}) 
+0

Вы абсолютная легенда. Огромное спасибо :) – AmyLouise

0

Вместо $("input[type=radio]:checked").val() попробуйте проверить длины, как это:

$(function() { 
    $("#click").click(function(){ 
     if ($("input[type=radio]:checked").length == 0) { 
      alert('Your message goes here'); 
     } 
    }) 
}); 

Когда вы использовали .val() JQuery тянет значение выбранной кнопки радио. Поскольку ни один радиокнопка не выбрана, вы получаете undefined. Если вы используете .length, jQuery возвращает количество элементов, соответствующих вашей строке выбора. В этом случае, если ни один из них не проверен, вы получите 0.

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