关于输入隐藏值变化的jQuery事件

时间:2013-07-17 08:53:24

标签: jquery events event-handling

我隐藏了这个输入:

<input id="j_idt26:myValue" type="hidden" name="j_idt26:myValue" value="0?100?">

我想在第一次设置值时提醒“hey”,然后每次更改时都提醒。

我有这样的事情:

$(document).ready(function(){
    var $hello= $('[id$=myValue]');

    $hello.bind("change load", function(){
        alert('hey');
    });
});

但是什么都没有出现 如果你能帮助你 感谢

4 个答案:

答案 0 :(得分:18)

$(function(){
    var $hello= $('[id$="myValue"]');

    $hello.on("change", function(){ //bind() for older jquery version
        alert('hey');
    }).triggerHandler('change'); //could be change() or trigger('change')
});

然后,每次更改目标隐藏输入的值时,触发处理程序,例如:

$('#j_idt26:myValue').val('0?200?').triggerHandler('change');

那是因为onchange事件不会自动以编程方式更改其值。

答案 1 :(得分:3)

更改事件在输入上的blur事件之后触发,换句话说,当输入失去焦点时。 MDN文档描述了这一点:

  

当元素值改变后失去焦点,但不是   提交(例如,在编辑或的值之后)。

由于input属于隐藏类型,因此永远不会与input进行任何用户互动,这意味着除非您的网站提供的客户端脚本更改它,否则它不会更改,这不会触发改变事件。

以下是两个选项:

明确调用change()

每当您修改隐藏输入调用.change()的值以触发事件时。

$(document).ready(function(){
    var $hello= $('[id$=myValue]');

    $hello.on("change", function(){
        alert('hey');
    });

    $hello.val("Something");
    $hello.change();
});

只需调用不带处理程序的代码

不要使用事件处理程序,只需执行源代码中的代码。

$(document).ready(function(){
    var $hello= $('[id$=myValue]');
    $hello.val("Something");
    alert('hey');
});

我想提到的另一件事是选择器的范围可以更好一些。

    var $hello= $('input[id$=myValue]');

如果你使用新版本的jQuery更喜欢on而不是bind,如上例所示。

答案 2 :(得分:1)

这很容易:

$('#my_id').val(myValue).trigger('change');

然后您可以检测$(&#39;#my_id&#39;)

的更改值

答案 3 :(得分:0)

您可以尝试以下代码:

$(function(){
    var $hello = $('[id$="myValue"]');

    $hello.bind("change load", function(){
        alert('hey');
    });
});