And*_*sov 21 javascript jquery jquery-events
我有一个<input type="text">
,我需要在文本框中的文本被更改后调用一个函数(包括在jQuery的keydown和keypress处理程序中执行的操作).
如果我从jQuery处理程序调用我的函数,我会看到在e.target.value
添加输入之前的value().因为我不想每次都手动将输入添加到值上,我如何调用我的函数并让它使用更新的值?
Val*_*Val 25
如果我理解你,那么这样的事情就是你能做到的
$('input').bind('change keydown keyup',function (){
/// do your thing here.
// use $(this).val() instead e.target.value
});
Run Code Online (Sandbox Code Playgroud)
更新时间:03/05/13
请注意:你最好.on()
还是反对使用.bind()
从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法.对于早期版本,.bind()方法用于将事件处理程序直接附加到元素.处理程序附加到jQuery对象中当前选定的元素,因此这些元素必须存在于调用.bind()的位置.有关更灵活的事件绑定,请参阅.on()或.delegate()中对事件委派的讨论.
有关jQuery Bind的更多信息
Sco*_*ler 16
您可以使用keyup - 因此只有在密钥发布后才调用它:
$("#idofinputfield").keyup(function() {
youFunction($(this).val());
});
Run Code Online (Sandbox Code Playgroud)
您可以通过获取新字符将被插入的位置来生成未来值:
$('input').bind('keypress',function (){
var value = e.target.value,
idx = e.target.selectionStart,
key = e.key;
value = value.slice(0, idx) + key + value.slice(idx + Math.abs(0));
return yourfunction(value);
});
Run Code Online (Sandbox Code Playgroud)