Флажок Нажмите not in sync -Jquery - PullRequest
0 голосов
/ 26 июля 2011

У меня есть таблица с флажком и столбцом ввода текста.Последняя строка в столбце флажка имеет ссылку «Проверить все».

После проверки всех нажмите:

1: текст должен измениться «Снять отметку со всех»

2: Установите флажок выше в столбце и установите текстовое поле текста = 500.

После "Снять все": 1: текст должен измениться "Проверить все" 2: Снять флажок и очистить текстовое поле.

Но пункт 2 выше не работает должным образом.

Шаги:

1: нажмите «Проверить все» - текст изменится на «Снять все», и флажок установлен, но для текстового поля не установлено значение 500.

2: нажмите «Снять все»- Текст меняется на «Отметить все», и флажок снят, но теперь он устанавливает для текстового поля значение 500.

Я думаю, что это некоторая проблема с обработкой событий, но я до сих пор не понял.

Есть идеи, что происходит?

Примечание: Мне придется использовать "onclick", потому что мой настоящий код - страница .aspx, которая не распознает замену с помощью флажка.

Обновленный код Образец .

Ответы [ 4 ]

1 голос
/ 26 июля 2011

Функции onClick () и setValue () запускаются до того, как click () применяет проверку к флажку;Поэтому на шаге 1 флажок не установлен.

1 голос
/ 26 июля 2011

изменено «проверено», чтобы быть логическим и в порядке.

обновлено http://jsbin.com/inocud/16

классовый подход - http://jsbin.com/inocud/22

0 голосов
/ 26 июля 2011

Попробуйте это

<script> 
 $(function () {
            $(".checkall").click(function () {


                if ($(this).text() == "Check All") {
                    $(this).text("Uncheck All");
                    $(this).parent().parent().prevUntil('tbody').each(function () {
                        $(this).find("td input:checkbox").attr('checked', 'checked').click();
                    });
                }
                else {
                    $(this).text("Check All");
                    $(this).parent().parent().prevUntil('tbody').each(function () {
                        $(this).find("td input:checkbox").removeAttr('checked').click();
                    });
                }
            });
        });
        function setValue(chb, txtid, valu) {
            if ($(chb).is(":checked")) {
                $("#" + txtid).val(valu);
            }
            else {
                $("#" + txtid).val("");
            }
        }

</script>
0 голосов
/ 26 июля 2011

Попытка выстрела.

Обновлено (Это взломать, но работает): http://jsfiddle.net/2YGYt/

Другой метод (не хакерский способ): http://jsfiddle.net/2YGYt/3/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...