Радиоуправления "Проверено" Не работает атрибут
Кнопка радио не отображается, как checked
по умолчанию. Я начал без выбора по умолчанию, выполняя очень простую проверку js, и он не работал. Поэтому я решил просто использовать значения по умолчанию, пока не понял, что обнаружил, что что-то странное происходит.
Разметка действительна, и я пробовал в FF, Safari и Chrome. Ничего не работает.
Я думаю, что это конфликт с библиотекой jQuery
потому что проблема исчезает, когда я удаляю скрипт вызова.
<label>Do you want to accept American Express?</label> Yes
<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1' /> No
<input style="width: 20px;" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked" />
Ответы
Ответ 1
Если у вас есть несколько одинаковых имен с атрибутом checked, на последней странице будет установлено последнее проверенное радио.
<form>
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" />
maybe<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" checked="checked" />
No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>
Ответ 2
Это может быть так:
Есть ли ошибка с переключателями в jQuery 1.9.1?
Вкратце: не используйте attr(), а prop() для проверки переключателей. Бог я ненавижу JS...
Ответ 3
Радиовходы должны находиться внутри формы, чтобы "проверять" на работу.
Ответ 4
Окончательное решение JavaScript для этой досадной проблемы -
Просто оберните команду jQuery в setTimeout
. Интервал может быть очень малым, я использую 10
миллисекунды, и он работает отлично. Задержка настолько мала, что она практически не обнаруживается конечным пользователям.
setTimeout(function(){
$("#radio-element").attr('checked','checked');
},10);
Это также будет работать с
-
$("#radio-element").trigger('click');
-
$("#radio-element").attr('checked',true);
-
$("#radio-element").attr('checked',ANYTHING_THAT_IS_NOT_FALSE);
Хакки... Хакки... Хакки... Хакки... Да, я знаю... отсюда это обходное решение....
Ответ 5
Эй, я тоже столкнулся с аналогичной проблемой на сгенерированной ajax странице. Я взял сгенерированный источник, используя Webdeveloper pluggin в FF, и проверил все входы в форме и обнаружил, что в скрытом div (еще один флажок): none) с тем же идентификатором, как только я изменил идентификатор второго флажка, он начал работать.. Вы также можете попробовать это.. и дайте мне знать результат.. cheers
Ответ 6
Просто скопировал ваш код в: http://jsfiddle.net/fY4F9/
Нет по умолчанию. У вас есть работа javascript, которая повлияет на радиоканал?
Ответ 7
Документация jQuery содержит подробное описание атрибута checked
vs.
Соответственно, это еще один способ получить выбранное значение переключателя
var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val();
Ответ 8
hi Я думаю, что если вы поместите атрибут id для второго ввода и присвоите ему уникальное значение id, он будет работать
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1'/>
No<input style="width: 20px;" id="amex0" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked"/>
Ответ 9
Ваш код прав, попробуйте отладить JQuery script, чтобы найти проблему!
Если вы используете FF, вы можете установить расширение для отладки JS (и JQuery), которое называется FireBug.
Ответ 10
**Radio button aria-checked: true or false one at a time**
$('input:radio[name=anynameofinput]').change(function() {
if (this.value === 'value1') {
$("#id1").attr("aria-checked","true");
$("#id2").attr("aria-checked","false");
}
else if (this.value === 'value2') {;
$("#id2").attr("aria-checked","true");
$("#id1").attr("aria-checked","false");
}
});
Ответ 11
Я мог бы повторить это, установив имя input
тега одинаково для двух групп ввода, как показано ниже:
<body>
<div>
<div>
<h3>Header1</h3>
</div>
<div>
<input type="radio" name="gender" id="male_1" value="male"> Male<br>
<input type="radio" name="gender" id="female_1" value="female" checked="checked"> Female<br>
<input type="submit" value="Submit">
</div>
</div>
<div>
<div>
<h3>Header2</h3>
</div>
<div>
<input type="radio" name="gender" id="male_2" value="male"> Male<br>
<input type="radio" name="gender" id="female_2" value="female" checked="checked"> Female<br>
<input type="submit" value="Submit">
</div>
</div>
</body>
(Чтобы увидеть это работает, нажмите здесь)
Следующие два решения обе решают проблему:
- Используйте разные имена для входов во второй группе
- Используйте тег
form
вместо тега div
для одной из групп (на самом деле не могу понять реальную причину, по которой это решило бы проблему. Хотелось бы услышать некоторые мнения по этому поводу!)
Ответ 12
просто добавьте проверенный атрибут для каждого радио, которое вы хотите установить по умолчанию
попробуйте следующее:
<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/>
Ответ 13
Вы используете нестандартный код xhtml (значения должны быть заключены в двойные кавычки, а не одинарные кавычки)
Попробуйте следующее:
<form>
<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" />
No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>