注册jquery单选按钮单击事件不起作用

时间:2011-02-17 23:08:22

标签: radio-button jquery

我正在尝试使用所选单选按钮的值设置隐藏的表单字段。我有以下代码:

    $(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 :(得分:0)

没有看到你的HTML,我不能完全确定,但我认为问题是你正在使用的选择器:

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

至少有两个问题可能会导致问题:

  1. 未封闭的方括号,
  2. 在属性选择器中使用方括号。请尝试使用:$('input[name="timeslot"]')代替。
  3. <小时/> 已编辑以回复对以下答案的评论。

    以下似乎有效:

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

    JS Fiddle demo

    我当然是使用text输入而不是hidden,但由于选择器适用于id,因此无论input如何,它都应该有效类型。

答案 1 :(得分:0)

好的,我通过REVERSING事件注册的顺序让它工作:

    $(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是一个混乱的混乱。但无论出于何种原因,它现在都有效。 (他们现在都工作......非常特别。)