jQuery: радиопроизводительный атрибут ввода кнопки не определена

StackOverflow https://stackoverflow.com/questions/2061230

Вопрос

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

<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>

Когда он работает, оповещение будет иметь «value = не определено»

Но, если я положил JavaScript после Div (или Body), оповещение возвращается с 'value = yes'

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

Это было полезно?

Решение

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

Другие советы

У меня была похожая проблема с «неопределенным».

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

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

Ischecked был «неопределенным»

И для этого

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

Ischecked - это правда или ложь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top