Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   input не переключается в checked (https://javascript.ru/forum/misc/46212-input-ne-pereklyuchaetsya-v-checked.html)

woojin 02.04.2014 05:46

input не переключается в checked
 
Вложений: 1
добрый день форумчане!

задача:
есть список цен(input radio), который должен переключаться при изменении количества и так же количество должно изменяться в зависимости от выбранной цены (если кол-во ближе к верхнему пределу, то ставится верхний предел, если к нижнему то наоборот)

принцип работы:
функция "сравнение и переключение" получает объект JQ, определяет откуда был отправлен этот объект (или правильнее что это за объект) и уже на основании этого делает необходимые переключения и вычисления

проблема:
находится необходимый мне INPUT по его значению (VALUE) но вот почему то ему не присваевается атрибут CHECKED, и нет ни одной ошибки в консоли, а значит скрипт работает на УРА

это основная часть скрипта (в HTML на всякий случай целиком, вдруг где то косяк, а я не заметил), а HTML странички вместе со скриптом в прикреплении
jQuery(function($) {
                // сравнение и переключение
                function check_quantity(variable) {
                    if (variable.hasClass("jsPriceIndex")) {
                        var val = parseInt(variable.val()); //может быть самовывоз
                        var qua = parseInt(jQuery('.jsQuantity').val(), 10);
                        switch (val) {
                            case 2://вторая цена
                                if (qua < 1) {
                                    qua = 1;            //количество 1-2шт
                                } else if (qua > 2) {
                                    qua = 2;
                                }
                                break;
                            case 3://третья цена
                                if (qua < 3) {
                                    qua = 3;            //количество 3-6шт
                                } else if (qua > 6) {
                                    qua = 6;
                                }
                                break;
                            case 4://четвёртая цена
                                if (qua < 7) {
                                    qua = 7;            //количество 7-10шт
                                } else if (qua > 10) {
                                    qua = 10;
                                }
                                break;
                        }
                        jQuery('.jsQuantity').val(qua);
                    }
                    if (variable.hasClass("jsQuantity")) {
                        var qua = parseInt(variable.val());
                        switch (true) {
                            case (qua <= 1 || qua == 2):  //количество 1-2шт
                                var val = 2; //вторая цена
                                break;
                            case (qua >= 3 && qua <= 6):  //количество 3-6шт
                                var val = 3; //третья цена
                                break;
                            case (qua >= 7 && qua <= 10): //количество 7-10шт
                                var val = 4; //четвёртая цена
                                break;
                            default:                       //количество любое
                                var val = 1; //самовывоз
                        }
                        jQuery(".jsPriceIndex [value='" + val + "']").attr('checked', true);
                    }
                }
                //увеличение количества
                $('.jsAddQuantity').click(function() {
                    var quantity = parseInt($('.jsQuantity').val(), 10);
                    quantity++;
                    $('.jsQuantity').val(quantity);
                    // отправка в сравнение и переключение
                    check_quantity($('.jsQuantity'));
                    return false;
                });
                //уменьшение количества
                $('.jsRemoveQuantity').click(function() {
                    var quantity = parseInt($('.jsQuantity').val(), 10);
                    quantity--;
                    if (quantity <= 0) {
                        quantity = 1;
                    }
                    $('.jsQuantity').val(quantity);
                    // отправка в сравнение и переключение
                    check_quantity($('.jsQuantity'));
                    return false;
                });
                jQuery('.jsPriceIndex').on("click", function() {
                    // отправка в сравнение и переключение
                    check_quantity(jQuery(this));
                });
//...................далее функции не имеющие отношения к проблеме...................
            });

jsnb 02.04.2014 06:48

Цитата:

Сообщение от woojin (Сообщение 305513)
jQuery(".jsPriceIndex [value='" + val + "']").attr('checked', true);

Ну так пробел в селекторе убери:
jQuery(".jsPriceIndex[value='" + val + "']").attr('checked', true);

danik.js 02.04.2014 08:02

вместо attr, нужно писать prop, хотя jQuery пока что прощает такую ошибку.

woojin 02.04.2014 12:01

отлично - заработало!!!!


Часовой пояс GMT +3, время: 17:09.