jquery: атрибут проверки ввода переключателя не определен

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

<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 (или тела), предупреждение вернется с «значение = Да»

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


person Larry    schedule 13.01.2010    source источник
comment
почему ваш <script> вне head и/или body?   -  person Marek Karbarz    schedule 14.01.2010


Ответы (2)


Проблема, с которой вы сталкиваетесь, заключается в том, что при загрузке страницы просто нет проверенных переключателей, поэтому ваш 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>
person Marek Karbarz    schedule 13.01.2010

У меня была аналогичная проблема с «неопределенным».

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

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

isChecked был «не определен»

и для этого

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

isChecked истинно или ложно

person Pažout    schedule 16.07.2014