Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery CSS on change仅在单击时起作用?_Javascript_Jquery_Onchange - Fatal编程技术网

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中选择一个值。)