我隐藏了这个输入:
<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');
});
});