隐藏输入值更改的jQuery事件



我隐藏了这个输入:

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

我想在第一次设置值时以及每次更改时提醒"嘿"。

我有这样的东西:

$(document).ready(function(){
    var $hello= $('[id$=myValue]');
    $hello.bind("change load", function(){
        alert('hey');
    });
});

但什么都没有出现
如果您能提供帮助
感谢

$(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事件不是通过程序自动更改其值而触发的。

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

当元素在其值更改后失去焦点,但没有committed(例如,在编辑或的值之后)。

由于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,如上例所示。

这很容易:

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

然后您可以检测$('#my_id')上的更改值

您可以尝试以下代码:

$(function(){
    var $hello = $('[id$="myValue"]');
    $hello.bind("change load", function(){
        alert('hey');
    });
});

相关内容

  • 没有找到相关文章

最新更新