问题描述
做评价的时候有分组,而且每组多个单选框,所以我把它放到一个隐藏域里面,但是通过js改变隐藏域的值,无法触发change事件,fireEvent方法,在firefox浏览器并不支持
解决方案
解决方案二:
可以通过定时器检查只读文本框的内容是否改变<table><tr><td>此处值通过js设置:</td><td><inputid="jsUserName"type="text"name="jsUserName"readonly/></td></tr><tr><td>此处输入值:</td><td><inputid="userName"type="text"name="userName"/></td></tr></table><table><tr><td>此处值通过js设置:</td><td><inputid="jsUserName"type="text"name="jsUserName"readonly/></td></tr><tr><td>此处输入值:</td><td><inputid="userName"type="text"name="userName"/></td></tr></table>JavaScript代码:viewplaincopytoclipboardprint?$(function(){varjsUserName="";if($.browser.msie)//IE浏览器{$("#userName").get(0).onpropertychange=setJsUserName;$("#jsUserName").get(0).onpropertychange=handle;}else//其他浏览器{varintervalName;//定时器句柄$("#userName").get(0).addEventListener("input",setJsUserName,false);//获得焦点时,启动定时器$("#userName").focus(function(){intervalName=setInterval(handle,1000);});//失去焦点时,清除定时器$("#userName").blur(function(){clearInterval(intervalName);});}//设置jsUserNameinput的值functionsetJsUserName(){$("#jsUserName").val($(this).val());}//jsUserNameinput的值改变时执行的函数functionhandle(){//IE浏览器此处判断没什么意义,但为了统一,且提取公共代码而这样处理。if($("#jsUserName").val()!=jsUserName){$("#toolTip").remove();$("#jsUserName").parent().append("<spanid='toolTip'>看到这里的信息表明,通过js改变input的值也能响应相应事件:<spanstyle="color:red;"mce_style="color:red;">"+$("#jsUserName").val()+"</span></span>");jsUserName=$("#jsUserName").val();}}});$(function(){varjsUserName="";if($.browser.msie)//IE浏览器{$("#userName").get(0).onpropertychange=setJsUserName;$("#jsUserName").get(0).onpropertychange=handle;}else//其他浏览器{varintervalName;//定时器句柄$("#userName").get(0).addEventListener("input",setJsUserName,false);//获得焦点时,启动定时器$("#userName").focus(function(){intervalName=setInterval(handle,1000);});//失去焦点时,清除定时器$("#userName").blur(function(){clearInterval(intervalName);});}//设置jsUserNameinput的值functionsetJsUserName(){$("#jsUserName").val($(this).val());}//jsUserNameinput的值改变时执行的函数functionhandle(){//IE浏览器此处判断没什么意义,但为了统一,且提取公共代码而这样处理。if($("#jsUserName").val()!=jsUserName){$("#toolTip").remove();$("#jsUserName").parent().append("<spanid='toolTip'>看到这里的信息表明,通过js改变input的值也能响应相应事件:<spanstyle="color:red;"mce_style="color:red;">"+$("#jsUserName").val()+"</span></span>");jsUserName=$("#jsUserName").val();}}});
不知道是不是你想问的
解决方案三:
应该可以监视change事件的..你使用js调试工具debug一下,..firebug等..
解决方案四:
js改变隐藏域的值后直接调用方法不行么?为什么一定要触发change呢?你onchange里面写的是什么呢不能提出来么?直接在改变值后调用
解决方案五:
js改变值是不能触发onchange函数的改变值还需要失去焦点才会触发onchange你可以百度一下相关资料
解决方案六:
debug试试。
解决方案七:
小弟,你要问什么啊?是不是隐藏的input不行,换成这样呢<spanstyle="display:none"><inputid="id1"value="你要赋的值"/></span>
解决方案八:
jQuery.fn.val方法来赋值本来就不触发change事件,但是可以手动触发。如:$('#inp').val(3353).change();
解决方案九:
change事件触发的前提是值改变和焦点变更,你用hidden没有焦点所以不能触发change事件,自己在改变值的时候主动调一下不就可以了,又省事实在想调的话需要添加onpropertychange和oninput事件到input控件,前者ie用,后者其它浏览器用