Я использую функцию jquery .prop() для проверки определенного радиовхода из группы радиовходов, которые возвращаются ajax. он на мгновение проверил нужный ввод, а затем снова не проверил.
Я создал кнопку, которая при нажатии вызывает функцию для ajax, и ajax возвращает список групп ввода радио, который помещен в тег <ul>
.
HTML-код для тега <ul>
.
<ul id= "list_option">
// here ajax response will come
</ul>
код кнопки:
<button class="btn btn-primary get_option" type="button" data-selected_option="2">click</button>
функция, вызываемая кнопкой:
$(document).on('click', '.get_option', function(){
var checked_answer_id = $(this).attr('data-selected_option');
get_opt();
$('#option_id_'+checked_answer_id).prop('checked',true);
});
Примечание. Я использую функцию attr() вместо data('selected_option'), потому что attr возвращал значение, которое по какой-то причине не является функцией данных.
функция для ajax:
function get_opt()
{
$.ajax({
url:"ajax_action.php",
method:"POST",
dataType: 'JSON',
data:{action:'get_option'},
success:function(response)
{ $('#list_option').html(response);}
})
}
Возврат HTML-кода со страницы ajax_action.php:
$output='
<li class="list-group-item border rounded border-success answer-item-list">
<div class="form-check">
<input class="form-check-input answer_option" type="radio" id="option_id_1" name="opt_grp" value="1">
<label class="form-check-label" for="option_id_1" > OPTION 1</label>
</div>
</li>
<li class="list-group-item border rounded border-success answer-item-list">
<div class="form-check">
<input class="form-check-input answer_option" type="radio" id="option_id_2" name="opt_grp" value="2">
<label class="form-check-label" for="option_id_2"> OPTION 2</label>
</div>
</li>
';
echo $output;
Весь приведенный выше код работает нормально, за исключением функции prop, которая проверяла желаемый радиовход, который в данном случае на мгновение является вариантом 2, а затем он не проверяется. Я не знаю, что я делаю неправильно.
jquery().prop()
вызывается до выполнения этого запроса. Вы должны поместить его в свою успешную функцию после вызова.html()
. - person Carsten Massmann   schedule 11.05.2020$('#list_option').html(response);
, поэтому вы перезаписываете.prop("checked", true)
содержимым изajax_action
. Добавьтеconsole.log("1")
(2,3...) в каждую строку, чтобы вы могли видеть порядок их выполнения. Похоже, вы ожидаете, что$('#list_option').html(response);
запустится раньше.prop('checked',true);
, когда этого не произойдет. - person freedomn-m   schedule 11.05.2020