Ошибка Afax в Safari?проверено радио не проверено - PullRequest
1 голос
/ 17 марта 2011

В Safari, если я загружаю фрагмент html через XHR (ajax), браузер не отображает переключатель, имеющий атрибут check = "checked", как флажок.

html, который я получаю через ajax:

<input type="radio" name="radiotest" value="off">
<input type="radio" name="radiotest" value="on" checked="checked">

браузер отображает два непроверенных переключателя.Если я загружаю точно такой же код непосредственно из простого html-файла (без ajax), переключатели отображаются так, как должны, последние находятся в проверенном состоянии.

что не так, это известная ошибка?Доступно ли исправление?

РЕДАКТИРОВАТЬ:

Дальнейшее исследование выглядит как ошибка браузера, и я пока не могу исправить ее с помощью пост-обработки jQuery, любая помощь приветствуется ... вот чтоЯ нашел:

У меня есть страница, которая вытягивает какой-то элемент формы через ajax.HTML-код выглядит следующим образом:

<input type="checkbox" name="checktest">
<input type="checkbox" name="checktest" checked="checked">

<input type="radio" name="radiotest" value="off">
<input type="radio" name="radiotest" value="on" checked="checked">

после того, как элемент формы извлечен, флажок отображается правильно, но радиомодуль не отображается.Теперь, если я запускаю следующую команду jQuery (из консоли Safari 5):

$('#activemodules input[checked="checked"]');

.. она возвращает объект, содержащий один отмеченный флажок.

, но если я запускаю команду:

$('#activemodules input[value="on"]');

фактически он корректно корректирует правильный объект, и даже показывает его правильное свойство outerHTML следующим образом:

outerHTML: "<input type="radio" name="radiotest" value="on" checked="checked">"

сейчас, если я сделаю:

 $('#activemodules input[value="on"]').attr('checked','checked');

Safari получает его и отображает правильно.Я предполагаю, что мне просто нужно будет передать атрибут data-ischecked = "true" и использовать его для перехвата и «перепроверки» всех переключателей после загрузки бита ajax… но все же, даже если я смогу это сделать,Я хотел бы услышать любые комментарии или предложения по этому вопросу.

Ответы [ 2 ]

1 голос
/ 17 марта 2011

На этом мои решения закончились так:

Сначала я добавляю атрибут data-ischecked = "1" для проверяемых радиостанций:

<input type="radio" name="foo" data-ischecked="1" value="bar" checked="checked">

затем, после ajaxвызов завершается успешно и завершается, я запускаю это:

$('#myradios :radio')
.each(function(){
    if( $(this).data('ischecked') ){
        $(this).attr('checked','checked');
        $(this).removeAttr('data-ischecked');
    }
});

Кажется, это работает нормально ... но я обнаружил еще кое-что важное:

Если я назвал атрибут данных просто проверенным на данныевместо проверки данных это НЕ РАБОТАЕТ, может быть, это зарезервированное имя?

А также;если я выполнил операцию в более широкой области селектора:

$(':radio')
    .each ...

, то она также НЕ РАБОТАЛА

Я не знаю почему, но добавляю идентификатор родительского элемента радиомодуляэто также было частью html, возвращаемого вызовом ajax в область действия selecor следующим образом:

$('#myradios :radio')

заставил его работать ..

0 голосов
/ 15 февраля 2015

Я обнаружил, что решение mikkelbreum работало только в том случае, если я не включил атрибут «флажок» в код, введенный AJAX.

<input type="radio" name="foo" data-ischecked="1" value="bar">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...