jquery change事件不触发的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery change事件不触发的问题相关的知识,希望对你有一定的参考价值。

jquery change事件不触发的问题
先定义2个input,目的是把input1的值复制到input2
<input name="input1" />
<input name="input2" />
代码如下
$(":input[name='input1']").bind('change focus blur', function()
$(":input[name='input2']").val($(this).val());
);
jquery 的change不触发,
不是因为代码不对,是因为input1是jquery直接赋值的,
$(":input[name='input1']").val('AAAAAA');
这样就触发不了,

临时的解决方法是,
$(":input[name='input1']").focus();
$(":input[name='input1']").val('AAAAAA');
$(":input[name='input1']").blur();
==========================================
求更好方法!!!!!或者怎么解决.................
===================================================附上完整代码.........暂时都没有解决问题
$(function()
$(":input[name='input1']").bind('change focus blur', function()
$(":input[name='input2']").val($(this).val());
);
);
var setvalue = function()
$(":input[name='input1']").val('AAAAAA');

<input name="input1" />
<input name="input2" />
<a href="javascript:;" onclick="setvalue();">赋值测试</a>
====================================================

参考技术A 把bind改成live试试追问

试了,没用

追答

既然input1的值也是jquery赋值的,为什么不同时将input2也直接赋值,何必要判断input1的变化再赋值2呢

参考技术B $("input").first().keyup(function()
$(this).next().val($(this).val());
);追问

根本就捕获不到事件,因为根本不会在input1上按键盘,
input1里的值,是通过ajax加载的,现在想通过事件复制到input2,而不是在ajax代码里

追答

只需change
$("input").first().change(function() $(this).next().val($(this).val()););
// ajax改值
$("input").first().change()

参考技术C

已测试 没有问题

$(function()

 $(":input[name='bbb']").val('aAAAAAAAA');

 $(":input[name='aaa']").bind("change focus blur",function()

  alert($(this).val());

  $(":input[name='bbb']").val($(this).val());

 );

)

追问

请看问题的补充中的完整代码,你这个测试也复制不了值

参考技术D input1 的值是jquery 直接赋值,根据你的逻辑,两个的值是一样的,那么就在赋值的同时给input2也赋值就行了追问

这是代码简化了,实际项目中因为不能去改动第一个模块,所以只能通过监听来解决

追答

你说你不能改动第一个模块,那你这个代码算怎么回事啊

$(":input[name='input1']").focus();
$(":input[name='input1']").val('AAAAAA');//这一段相当于你说的第一个模块,既然你能上下加上两行代码,那为何不直接
$(":input[name='input2']").val('AAAAAA');
$(":input[name='input1']").blur();

追问

能不纠结这个问题么?
这个是临时解决方案,临时的,要改回去的,
不然我来问这个问题干嘛!!! 直接赋值谁不会

追答

那就没法了,要不你设个定时器去,定时获取input1的值,赋值给input2

jquery 怎么触发select的change事件

可以使用jQuery的trigger() 方法来响应事件

 

定义和用法

  trigger() 方法触发被选元素的指定事件类型。

 

语法

  $(selector).trigger(event,[param1,param2,...])

 

 

参数描述

event    必需。规定指定元素要触发的事件。可以使自定义事件(使用 bind() 函数来附加),或者任何标准事件。   

[param1,param2,...]    可选。传递到事件处理程序的额外参数。额外的参数对自定义事件特别有用。

 

实例:

   触发 select元素的change事件:

$("button").click(function(){
  $("select").trigger("change");
});

 

以上是关于jquery change事件不触发的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥 jQuery 的 .change() 事件只在鼠标右键单击时触发?

jquery radio改变时没有触发on的change事件,是为啥

js中的change事件不起作用

jquery 怎么触发select的change事件

JQuery触发radio或checkbox的change事件

JQuery中select change事件该怎么触发?