Как принудительно установить чекбокс в 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, время: 20:21. |