Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / input не переключается в checked / 6 сообщений из 6, страница 1 из 1
02.04.2014, 05:47
    #38602512
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
input не переключается в checked
добрый день форумчане!

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

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

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

это основная часть скрипта (в HTML на всякий случай целиком, вдруг где то косяк, а я не заметил), а HTML странички вместе со скриптом в прикреплении
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
            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));
                });
//...................далее функции не имеющие отношения к проблеме...................
            });
...
Рейтинг: 0 / 0
02.04.2014, 09:58
    #38602618
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
input не переключается в checked
Если консоль не выдает ошибок, это не значит что скрипт работает на УРА, это значит что нет ошибок. Скорее всего селектор ничего не возвращает.
...
Рейтинг: 0 / 0
02.04.2014, 10:02
    #38602624
Кавказ-сила
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
input не переключается в checked
...
Рейтинг: 0 / 0
02.04.2014, 11:19
    #38602758
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
input не переключается в checked
GustlyЕсли консоль не выдает ошибок, это не значит что скрипт работает на УРА, это значит что нет ошибок. Скорее всего селектор ничего не возвращает.

вместо
Код: javascript
1.
jQuery(".jsPriceIndex [value='" + val + "']").attr('checked', true);


делал
Код: javascript
1.
2.
3.
4.
                        var v = jQuery(".jsPriceIndex[value='" + val + "']");
                        console.log(v);
                        v.attr('checked', true);
                        console.log(v);


после первого console.log(v); - CHECKED не установлено
после второго console.log(v); - CHECKED установлено, но на странице не отображается

Кавказ-сила http://api.jquery.com/prop/
заменял attr на prop результат идентичен

что посоветуете?
...
Рейтинг: 0 / 0
02.04.2014, 11:35
    #38602784
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
input не переключается в checked
woojin , я х/з что ты там ваяешь...

Но все работает.

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
	$('#on').click(function (){
		$('#test').prop('checked',true);
	});
	$('#off').click(function (){
		$('#test').prop('checked',false);
	});
});
</script>
</head>
<body>
<input type='checkbox' id='test' />
<button id='on'>On</button>
<button id='off'>Off</button>
</body>
</html>
...
Рейтинг: 0 / 0
02.04.2014, 12:06
    #38602845
woojin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
input не переключается в checked
я что то и сам не понял, до этого prop не срабатывал :(
сейчас заменил attr на prop и всё заработало

всем спасибо!!!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / input не переключается в checked / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]