js为隐藏域赋值,触发change事件无效

问题描述

做评价的时候有分组,而且每组多个单选框,所以我把它放到一个隐藏域里面,但是通过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用,后者其它浏览器用

时间: 2024-10-26 01:52:46

js为隐藏域赋值,触发change事件无效的相关文章

jquey隐藏域赋值

问题描述 var goods_amount = $("#goods_amount").val();goods_amount = formatNum((parseFloat(goods_amount)+parseFloat(totalPrice)),2);$("#goods_amount").val(goods_amount);//这句无法赋值...为什么???? 问题补充:pwc_pengwenchao 写道 解决方案 眼镜看花了..真没看出问题来...要不把 &l

JQuery触发radio或checkbox的change事件_jquery

早上要做一功能,checkbox被选中时,显示隐藏的层,取消选中时,再隐藏选中的层. 初始代码如下: 复制代码 代码如下: $(function(){ $("#ischange").change(function() { alert("checked"); }); }); 捣腾了半天,竟然一点反应都没有.百度了下,有高人指出上面几行代码在Firefox等浏览器中可以正常运行,即你选中复选框或取消复选框都会弹出一个对话框,但是在IE中却不会正常执行,即选中或取消复选框

jQuery中change事件用法实例_jquery

本文实例讲述了jQuery中change事件用法.分享给大家供大家参考.具体分析如下: change事件会在匹配元素失去焦点或者其值获得焦点并且改变时触发. 一个完整的事件过程,不但要有能够触发事件的条件,而且还要有事件处理程序.可以通过change()方法为change事件绑定事件处理程序.例如: 复制代码 代码如下: $("input").change(function(){$("input").css("backgroundColor",&

jQuery实现自动调用和触发某个事件的方法_jquery

本文实例讲述了jQuery实现自动调用和触发某个事件的方法.分享给大家供大家参考,具体如下: 我以点击事件为例,研究一下这个话题: jQuery 自动触发点击事件 1.比如我们通过jquery定义了一个点击事件,我们如何自动触发他: $(function(){ $('#button').click(function(){ alert('button is clicking!'); }); }) 1)自动触发点击事件 $('#button').click(); 这大大出乎了 我的意料,我以为这样

html中隐藏域hidden的作用介绍及使用示例

隐藏域在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用,下面为大家详细介绍下此隐藏域在实际中时如何使用的,感兴趣的朋友不要错过了哈   基本语法: <input type="hidden" name="field_name" value="value"> 作用: 1 隐藏域在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用.浏览者单击

BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析_javascript技巧

问题1: 如下代码: <input type="hidden" name="productId"/> $("#addForm").bootstrapValidator({ fields: { productId: { validators: { notEmpty: { message: '请选择一个商品' } } } } }); 这样的配置并没有在提交的时候对表单元素productId进行验证,那是因为bootstrapValidat

jquery-【jQuery】【js】复选框只改变checked属性会激发change事件么

问题描述 [jQuery][js]复选框只改变checked属性会激发change事件么 一个列表里的几行数据,每行数据前都有一个复选框,默认为不选中状态,点击某行的时候会设置当前行前复选框的checked属性为true,但是对应的change事件并不执行,如果直接点击某行的复选框,change事件就执行了,什么原因 解决方案 我的复选框是通过onclick事件处理的,在函数里面去判断checked是true还是false ``` /* 显示时间 */ function showTime() {

jquery触发select的change事件失效

问题描述 jquery在页面第二次加载的时候触发不了下拉框的change事件,启动tomcat,地址栏输入http://localhost:8080/aa/list.jsp时能够触发下拉框的change事件,但是从servlet过来后就不起作用了,怎么回事?-------------------list.jsp页面<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodi

js触发onchange事件的方法说明

 怎么在js代码模式通过代码触发textbox控件的onchange事件呢,经过查阅资料,发现js提供了一个方法,可以触发控件的应该是所有事件 js中onchange事件是在客户端改变输入控件的值,比如一个textbox,会出发的一个事件.但是如果在js代码中改变一个textbox的value,而不是通过键盘输入改变一个textbox值的话,是不会出发onchange事件的.   那么,如何在js代码模式通过代码触发textbox控件的onchange事件呢,经过查阅资料,发现js提供了一个方法