Javascript jQuery CSS on change仅在单击时起作用?
我在函数中创建的“按钮”的初始设置如下所示Javascript jQuery CSS on change仅在单击时起作用?,javascript,jquery,onchange,Javascript,Jquery,Onchange,我在函数中创建的“按钮”的初始设置如下所示 $(.save_w”).css(“颜色”、“灰色”); $(“.save_w”).css(“指针事件”,“无”); HTML(简体): 接下来,函数很简单: $('body')。在('change','上。输入w',函数(){ 控制台日志(“更改”); $(“.save_w”).css(“指针事件”、“自动”); $(“.save_w”).attr(“颜色”,“颜色”); }); 我想要达到的目标 使用类“input\u w”更改输入值后,应更
$(.save_w”).css(“颜色”、“灰色”);
$(“.save_w”).css(“指针事件”,“无”);
HTML(简体):
接下来,函数很简单:
$('body')。在('change','上。输入w',函数(){
控制台日志(“更改”);
$(“.save_w”).css(“指针事件”、“自动”);
$(“.save_w”).attr(“颜色”,“颜色”);
});
我想要达到的目标
使用类“input\u w”
更改输入值后,应更改“.save\u w”
的css
我得到了什么
当我更改输入值时,
“.save_w”
会更改,但只有在我单击网站上的某个位置后(通常我单击其他元素以触发更改)。为什么?此处没有onclick
方法。只有在通过离开表单字段提交更改后才会触发change
事件:
当用户提交对元素值的更改时,将为
、
和
元素触发更改事件。与输入
事件不同,元素值的每次更改不一定触发更改
事件
根据要更改的元素类型以及用户与元素交互的方式,change
事件在不同的时刻触发:
[……]
- 当元素在其值更改但未提交后(例如,在编辑
或
的值后)失去焦点时
input
事件可能更符合您的喜好:
当
、
或
元素的值已更改时,将触发输入
事件
[……]
注意:每次元素值更改时都会触发输入事件。这与change
事件不同,该事件仅在提交值时触发,例如通过按enter键、从选项列表中选择值等
()只有在通过离开表单字段提交更改后,
change
事件才会触发:
当用户提交对元素值的更改时,将为
、
和
元素触发更改事件。与输入
事件不同,元素值的每次更改不一定触发更改
事件
根据要更改的元素类型以及用户与元素交互的方式,change
事件在不同的时刻触发:
[……]
- 当元素在其值更改但未提交后(例如,在编辑
或
的值后)失去焦点时
input
事件可能更符合您的喜好:
当
、
或
元素的值已更改时,将触发输入
事件
[……]
注意:每次元素值更改时都会触发输入事件。这与change
事件不同,该事件仅在提交值时触发,例如通过按enter键、从选项列表中选择值等
()这里是另一个例子,它使用
输入
和CSS来简化更改
$(函数(){
$('body')。on('input','input_w',function(){
如果($(this.val().length>1){
$(“.save_w”).addClass(“活动”);
}否则{
$(“.save_w”).removeClass(“活动”);
}
});
});代码>
。保存{
颜色:灰色;
指针事件:无;
}
.保存w.active{
颜色:黑色;
指针事件:自动;
}
这里是另一个示例,它使用输入和CSS使更改更容易一些
$(函数(){
$('body')。on('input','input_w',function(){
如果($(this.val().length>1){
$(“.save_w”).addClass(“活动”);
}否则{
$(“.save_w”).removeClass(“活动”);
}
});
});代码>
。保存{
颜色:灰色;
指针事件:无;
}
.保存w.active{
颜色:黑色;
指针事件:自动;
}
将事件更改为输入即可
$('body').on('input', '.input_w', function() {
console.log("change");
$(".save_w").css("pointer-events", "auto");
$(".save_w").attr("color", "grey");
});
将事件change
更改为input
就是您所需要的
$('body').on('input', '.input_w', function() {
console.log("change");
$(".save_w").css("pointer-events", "auto");
$(".save_w").attr("color", "grey");
});
在这种情况下,更改是在模糊时触发的,如果您希望在用户输入内容时更改,那么您可能希望使用按键向上键或向下键考虑使用keyup
与change
进行对比,后者正在等待blur
来确定值是否已更改。然后,您可以检查值的长度,如果它大于1,则更改CSS。keyup
和keypress
都不足够,因为输入可能是通过键输入以外的其他方式完成的。(例如,右键单击并选择“粘贴”,或将文本拖到字段中,或从“自动完成”下拉列表中选择一个值。)应改为使用input
。为什么要对body标记应用事件?这不是输入标签吗?输入标签可能会在之后添加。在这种情况下,更改会在模糊时触发,如果您希望它在用户输入内容时发生更改,那么您可能希望使用按键键向上或向下键考虑使用keyup
与等待blur
确定值是否已更改的change
。然后,您可以检查值的长度,如果它大于1,则更改CSS。keyup
和keypress
都不足够,因为输入可能是通过键输入以外的其他方式完成的。(例如,右键单击并选择“粘贴”,或将文本拖动到字段中,或从自动完成dr中选择一个值。)