Регистрация события нажатия кнопки переключателя jquery не работает - PullRequest
0 голосов
/ 18 февраля 2011

Я пытаюсь установить скрытое поле формы со значением выбранного переключателя. У меня есть следующий код:

    $(function () {
        // set hidden form field with selected timeslot
        $('input[name=["timeslot"]').live("click", (function () {
            var valu = $(this).val();
            alert(valu);
            $("#selectedSlot").val(valu);
        }));
    });

Все переключатели имеют название «временной интервал», и я хотел бы запускать эту функцию при каждом нажатии. Однако окно предупреждения отображается пустым, когда я нажимаю одну из переключателей.

ОБНОВЛЕНИЕ: Ой! Не видел двойных квадратных скобок. Однако я исправил это:

        $('input[name="timeslot"]').live("click", (function () {
            var valu = $(this).val();
            alert(valu);
            $("#selectedSlot").val(valu);
        }));

и у меня все еще такая же проблема. На самом деле окно предупреждения даже по какой-то причине больше не появляется.

ОБНОВЛЕНИЕ 2: На самом деле, в моем реальном коде у меня есть другие события, зарегистрированные в моем блоке инициализации, кроме этого - если я уберу их все, кроме переключателя один, он будет работать!

Например, если у меня есть это:

    $(function () {
        // set hidden form field with selected interviewee
        $('#interviewees').live("change", (function () {
            var selected = $("#interviewees").val();
            $("#selectedInterviewee").val(selected);
        }));
        // set hidden form field with selected timeslot
        $('input[name="timeslot"]').live("click", (function () {
            var valu = $(this).val();
            alert(valu);
            $("#selectedSlot").val(valu);
        }));
    });

тогда событие щелчка переключателя НЕ срабатывает, хотя первое (раскрывающийся список) срабатывает. Но если у меня есть радио-кнопка одна, это делает. Есть идеи ????

Теги ввода выглядят так:

<input id="slot_7:30-AM" name="timeslot" type="radio" value="slot_7:30-AM" />

В основном я использую IE 8, но я попробовал это на Firefox, и произошло то же самое. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2011

ОК, я получил его на работу, изменив порядок регистрации событий:

    $(function () {
        // set hidden form field with selected timeslot
        $('input[name="timeslot"]').live("click", (function () {
            var valu = $(this).val();
            alert(valu);
            $("#selectedSlot").val(valu);
        }));
        // set hidden form field with selected interviewee
        $('#interviewees').live("change", (function () {
            var selected = $("#interviewees").val();
            $("#selectedInterviewee").val(selected);
        }));
    }); 

Тьфу.Я возвращаюсь к своему мнению, что JavaScript - беспорядочный беспорядок.Но по какой-то причине это работает сейчас.(Они оба работают сейчас ... очень своеобразно.)

0 голосов
/ 18 февраля 2011

Не видя ваш html, я не могу быть полностью уверен, но я думаю, что проблема в том, какой селектор вы используете:

$('input[name=["timeslot"]')

Есть как минимум две проблемы, которые могут вызвать проблемы:

  1. незакрытые квадратные скобки и
  2. использование квадратных скобок внутри селектора атрибута.Попробуйте использовать: $('input[name="timeslot"]') вместо.

Отредактировано в ответ на комментарии к ответу ниже.

Кажется, работает следующее:

$('input[name="timeslot"]').live('click', function() {
    var valu = $(this).val();
    alert(valu);
    $("#selectedSlot").val(valu);
});

Демонстрация JS Fiddle .

Я, конечно, использую вход text вместо hidden, но, поскольку селектор работает на id, он должен работать независимо от типа input.

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