我隐藏了这个输入:
<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');
});
});
但是什么都没有出现 如果你能帮助你 感谢
答案 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');
});
});