Javascript jQuery-在输入字段上绑定多个事件
我想知道在表单字段上绑定一个Javascript jQuery-在输入字段上绑定多个事件,javascript,forms,jquery,Javascript,Forms,Jquery,我想知道在表单字段上绑定一个change()事件是否足以在字段值更改时正确执行操作 或者我应该绑定所有可能的事件?像这样: $(this).bind('change keyup focus click keydown', function(){ // ... }).change(); 另外,绑定多个事件是否会影响性能?我认为没有性能损失,除非您在处理程序中执行非常缓慢的操作。我认为没有性能损失,除非您在处理程序中执行非常缓慢的操作。每个事件发生在不同的时间。可能会
change()
事件是否足以在字段值更改时正确执行操作
或者我应该绑定所有可能的事件?像这样:
$(this).bind('change keyup focus click keydown', function(){
// ...
}).change();
另外,绑定多个事件是否会影响性能?我认为没有性能损失,除非您在处理程序中执行非常缓慢的操作。我认为没有性能损失,除非您在处理程序中执行非常缓慢的操作。每个事件发生在不同的时间。可能会有一些重叠,但是根据您所做的工作,它们可能会非常不同。例如,
keyup
事件发生在输入上的值已经更新之后。而向下键
以前发生过。这可以使您停止输入文本框中的值
就性能而言,在本例中,您正在为五个不同的事件运行代码。与单个事件相比。至少您的代码应该区分事件之间的重叠。每个事件发生在不同的时间。可能会有一些重叠,但是根据您所做的工作,它们可能会非常不同。例如,keyup
事件发生在输入上的值已经更新之后。而向下键
以前发生过。这可以使您停止输入文本框中的值
就性能而言,在本例中,您正在为五个不同的事件运行代码。与单个事件相比。至少您的代码应该区分事件之间的重叠。只听更改事件可能就足够了(另请参见)。从:
当元素的值更改时,change
事件被发送到元素。此事件仅限于
元素、
框和
元素。对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件会延迟到元素失去焦点为止
仅听更改事件可能就足够了(另请参见)。从:
当元素的值更改时,change
事件被发送到元素。此事件仅限于
元素、
框和
元素。对于选择框、复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件会延迟到元素失去焦点为止
change
仅当字段失去焦点时才会触发(对于大多数输入)。如果您想要更实时一点的内容,请使用HTML5oninput
事件。这几乎可以捕获输入元素的任何类型的值更改(它也会冒泡!)。虽然Internet Explorer 8和更低版本不支持它,但对于这些浏览器,它映射到onpropertychange
另见:
对于性能方面,您描述的每个事件都会在不同的时间触发,因此性能不应成为问题,除非。change
仅在字段失去焦点时才会触发(对于大多数输入)。如果您想要更实时一点的内容,请使用HTML5oninput
事件。这几乎可以捕获输入元素的任何类型的值更改(它也会冒泡!)。虽然Internet Explorer 8和更低版本不支持它,但对于这些浏览器,它映射到onpropertychange
另见:
对于性能方面的问题,您描述的每个事件在不同的时间触发,因此性能不应成为问题,除非执行此操作时出现问题:
$(this).bind('change keyup focus click keydown', function(e) { // ...
您必须输入事件处理程序,以确定实际触发了哪个事件
switch(e.type) {
case 'change': {
break;
}
case 'focus': {
break;
}
// ...
}
如果对您来说足够的话,我会绑定一个change
事件。在处理所有这些事件时,您会遇到很多麻烦,因为单击
在更改
之前触发,在单击
之后触发,焦点
等等。这会影响您正确理解和操作。执行此操作的问题:
$(this).bind('change keyup focus click keydown', function(e) { // ...
您必须输入事件处理程序,以确定实际触发了哪个事件
switch(e.type) {
case 'change': {
break;
}
case 'focus': {
break;
}
// ...
}
如果对您来说足够的话,我会绑定一个change
事件。在对所有这些事件执行操作时,您会遇到很多麻烦,因为单击在更改之前触发,在单击之后触发,聚焦,等等。这会损害您的理解和正确操作。嗯,某些事件在值更改时不会引发。例如,当文本字段中的值更改时,焦点
或单击
不会引发,如果单击文本字段,则不会更改值。当然,当值更改时,某些事件不会引发。例如,当文本字段中的值更改时,焦点
或单击
不会升高,如果您单击文本字段,则不会更改值。但它不起作用。。这是因为我有xhtml doctype吗?好的,我在你发布的链接中使用了input
而不是oninput
,它可以工作:但是你必须将它与bind('change keyup')之类的更改一起使用,否则复选框和选项将无法工作work@Alexandra:输入
事件应使用
元素触发,你用哪个浏览器测试过它?我不建议输入检测使用keyup
事件,请坚持change
或单击.chrome。input只在文本元素上触发,但这没关系,因为通过input&change,您可以替换焦点、单击、键控等。。(我在上面的评论中是指bind('change input')
),但它不起作用。。是因为我有xhtml doctype吗?好的,我使用了input
而不是oninput
之类的