Как принудительно установить чекбокс в disabled
Такая ситуация при выборе чекбокса на бекенде проверяется не привышен ли лимит и выдается сообщение, по идее после полученного сообщения должен устанавливаться чекбокс текущий в disabled но почему то не устанавливается
$('input[type="checkbox"]').change(function () { //посчитать сколько билетов в этой категории с включенными чекбоксами var checkboxes = $(this).parent('div').parent('.list-view').find('input[type=checkbox]'); var sThisValAr = []; checkboxes.each(function () { if (this.checked) { sThisValAr.push($(this).val()) } }); var checkbox_length = sThisValAr.length - 1; $.ajax({ type: "POST", url: "<?php echo Url::to(['/rest/get-tickets-limit']);?>", data: {id: $(this).val(), checkbox_length: checkbox_length} }).done(function (msg) { if (msg == 'To many tickets') { if ($(this).is(":checked")) { } else { alert('not checked'); //Попадаю сюда но чекбокс становится выбранным $(this).prop('disabled', true) } } }); }) |
imedia, нужно не свойство устанавливать, а атрибут.
|
Nexus, именно так $(this).prop('disabled', true) и надо
|
imedia,
this в контексте вызова функции меняется. Попробуйте так: $('input[type="checkbox"]').change(function () { //посчитать сколько билетов в этой категории с включенными чекбоксами var checkboxes = $(this).parent('div').parent('.list-view').find('input[type=checkbox]'); var sThisValAr = []; checkboxes.each(function () { if (this.checked) { sThisValAr.push($(this).val()) } }); var that = this; var checkbox_length = sThisValAr.length - 1; $.ajax({ type: "POST", url: "<?php echo Url::to(['/rest/get-tickets-limit']);?>", data: {id: $(this).val(), checkbox_length: checkbox_length} }).done(function (msg) { if (msg == 'To many tickets') { if ($(that).is(":checked")) { } else { alert('not checked'); $(that).prop('disabled', true) } } }); }) |
laimas, оба варианта работают.
https://jsfiddle.net/ufe9t79k/ |
Цитата:
|
У меня не работает .
А как сделать чтобы Самый нижний алерт вывелся после аякса а не до? $('input[type="checkbox"]').change(function () { //посчитать сколько билетов в этой категории с включенными чекбоксами var checkboxes = $(this).parent('div').parent('.list-view').find('input[type=checkbox]'); var sThisValAr = []; $.each( checkboxes, function( key, value ) { if (value.checked) { sThisValAr.push($(value).val()) } }); $(this).prop('disabled', true) window.ms=0; var checkbox_length = sThisValAr.length - 1; $.ajax({ type: "POST", url: "<?php echo Url::to(['/rest/get-tickets-limit']);?>", data: {id: $(this).val(), checkbox_length: checkbox_length} }).done(function (msg) { if (msg == 'To many tickets') { alert(msg) window.ms=1; alert(window.ms) } }); //Как сделать чтобы этот алерт вывелся после аякса а не до alert(window.ms) }) |
Часовой пояс GMT +3, время: 05:54. |