JQuery: атрибут переключателя ввода проверяется неопределенный - PullRequest
3 голосов
/ 14 января 2010

У меня есть следующее и в этом порядке:

<script type="text/javascript">
  $(document).ready(function(){
     var overwrite = $('#itemList input:radio:checked').val() 

     alert('value = '+ overwrite);
  });
</script>
<body>
  <form ..... >
    <div id="itemList">
    Overwrite?
    <input type="radio" value="Yes" class="overWrite" name="overWrite" >Yes
    <input type="radio" value="No" class="overWrite" name="overWrite" >No
    </div>
  </form>
</body>

при запуске оповещения будет иметь значение «значение = не определено»

НО, если я поставлю javascript после div (или body), предупреждение вернется со значением 'yes =' *

Почему jquery не распознает тип радио в начале страницы? Если я создаю type = 'hidden', jquery может прочитать / распознать значение, если оно находится в начале страницы. Когда type = 'radio', поведение отличается

Ответы [ 2 ]

6 голосов
/ 16 июля 2014

У меня была похожая проблема с 'undefined'.

когда я проверял это

var isChecked = $('#itemList').attr('checked');

isChecked был 'undefined'

и для этого

var isChecked = $('#itemList').prop('checked');

isChecked - истина или ложь

3 голосов
/ 14 января 2010

Проблема, с которой вы сталкиваетесь, заключается в том, что при загрузке страницы просто нет отмеченных переключателей, поэтому ваш jquery возвращает нулевой объект.

По умолчанию проверяется «нет» и возвращается правильное значение. Так что ваш javascript технически корректен, вам просто нужно проверить наличие нулевых значений

<head>
<title>jQuery Tester</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

</head>

<body>
    <div id="itemList">
    Overwrite?
    <input type="radio" value="Yes" class="overWrite" name="overWrite"  />Yes
    <input type="radio" value="No" class="overWrite" name="overWrite" checked="checked" />No 
    </div>


<script type="text/javascript">
  $(document).ready(function(){
     var overwrite = $('#itemList input:radio:checked').val();

     alert('value = ' + overwrite);
  });
</script>
</body>
</html>
...