Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.09.2017, 16:31
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

Как принудительно установить чекбокс в 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)
                }

            }
        });


    })
Ответить с цитированием
  #2 (permalink)  
Старый 13.09.2017, 16:39
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

imedia, нужно не свойство устанавливать, а атрибут.
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2017, 17:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Nexus, именно так $(this).prop('disabled', true) и надо
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2017, 17:30
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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)
                }

            }
        });


    })
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2017, 17:31
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

laimas, оба варианта работают.
https://jsfiddle.net/ufe9t79k/
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2017, 17:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
оба варианта работают.
А никто и не говорит, что не будет иной, но верное это prop, а не attr.
Ответить с цитированием
  #7 (permalink)  
Старый 13.09.2017, 18:41
Профессор
Отправить личное сообщение для imedia Посмотреть профиль Найти все сообщения от imedia
 
Регистрация: 20.05.2014
Сообщений: 292

У меня не работает .
А как сделать чтобы Самый нижний алерт вывелся после аякса а не до?
$('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)

    })
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как установить IE8 на Вин10? Nik001 Internet Explorer 6 01.03.2016 22:39
jQuery UI -> selectmenu, как установить вручную selected? Pit jQuery 3 28.05.2015 17:31
как установить babeljs (6to5) caetus Общие вопросы Javascript 3 26.05.2015 10:00
Как правильно установить node.js? jack3dm Node.JS 2 16.04.2015 13:50
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46