在keydown/keypress之后获取输入值

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)


dob*_*bra 6

您可以通过获取新字符将被插入的位置来生成未来值:

$('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)