Подтвердить что ты не робот

Радиоуправления "Проверено" Не работает атрибут

Кнопка радио не отображается, как 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" />
4b9b3361

Ответ 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>

Ответ 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>

(Чтобы увидеть это работает, нажмите здесь)

Следующие два решения обе решают проблему:

  1. Используйте разные имена для входов во второй группе
  2. Используйте тег 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>