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

I-miss-you 2014-11-06 04:58:21

做评价的时候有分组,而且每组多个单选框,所以我把它放到一个隐藏域里面,但是通过js改变隐藏域的值,无法触发change事件,

fireEvent方法,在firefox浏览器并不支持
...全文
5322 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐的2 2014-11-07
  • 打赏
  • 举报
回复
jQuery.fn.val方法来赋值本来就不触发change事件,但是可以手动触发。 如:$('#inp').val(3353).change();
Giberson1 2014-11-07
  • 打赏
  • 举报
回复
小弟,你要问什么啊? 是不是隐藏的input不行,换成这样呢

<span style="display: none"><input id="id1" value="你要赋的值" /></span>
tony4geek 2014-11-07
  • 打赏
  • 举报
回复
debug试试。
sui2121 2014-11-07
  • 打赏
  • 举报
回复
js改变值 是不能触发onchange函数的 改变值还需要失去焦点才会触发onchange 你可以百度一下相关资料
qq840727854 2014-11-07
  • 打赏
  • 举报
回复
js改变隐藏域的值 后 直接 调用 方法 不行么? 为什么一定要触发change呢? 你 onchange 里面写的 是什么呢 不能提出来么? 直接在改变值后 调用
coffee-time 2014-11-07
  • 打赏
  • 举报
回复
change事件触发的前提是值改变和焦点变更,你用hidden没有焦点所以不能触发change事件,自己在改变值的时候主动调一下不就可以了,又省事 实在想调的话需要添加onpropertychange和oninput事件到input控件,前者ie用,后者其它浏览器用
attilax 2014-11-06
  • 打赏
  • 举报
回复
应该可以监视change事件的..你使用js调试工具debug一下,..firebug 等..
sui2121 2014-11-06
  • 打赏
  • 举报
回复
可以通过定时器检查只读文本框的内容是否改变
<table>
            <tr>
                <td>此处值通过js设置:</td>
                <td><input id="jsUserName" type="text" name="jsUserName" readonly/></td>
            </tr>
            <tr>
                <td>此处输入值:</td>
                <td><input id="userName" type="text" name="userName"/></td>
            </tr>
        </table>
<table>
   <tr>
    <td>此处值通过js设置:</td>
    <td><input id="jsUserName" type="text" name="jsUserName" readonly/></td>
   </tr>
   <tr>
    <td>此处输入值:</td>
    <td><input id="userName" type="text" name="userName"/></td>
   </tr>
  </table>

JavaScript代码:

view plaincopy to clipboardprint?
$(function()  
        {  
            var jsUserName = "";  
            if($.browser.msie)  // IE浏览器  
            {  
                $("#userName").get(0).onpropertychange = setJsUserName;  
                $("#jsUserName").get(0).onpropertychange = handle;  
            }  
            else    // 其他浏览器  
            {  
                var intervalName;   // 定时器句柄  
                $("#userName").get(0).addEventListener("input",setJsUserName,false);  
                  
                // 获得焦点时,启动定时器  
                $("#userName").focus(function(){  
                    intervalName = setInterval(handle,1000);  
                });  
                // 失去焦点时,清除定时器  
                $("#userName").blur(function()  
                {  
                    clearInterval(intervalName);  
                });  
            }  
              
            // 设置jsUserName input的值  
            function setJsUserName()  
            {  
                $("#jsUserName").val($(this).val());  
            }  
              
            // jsUserName input的值改变时执行的函数  
            function handle()  
            {     
                // IE浏览器此处判断没什么意义,但为了统一,且提取公共代码而这样处理。  
                if($("#jsUserName").val() != jsUserName)  
                {  
                    $("#toolTip").remove();  
                    $("#jsUserName").parent().append("<span id='toolTip'>看到这里的信息表明,通过js改变input的值也能响应相应事件:<span  style="color:red;" mce_style="color:red;">" + $("#jsUserName").val() + "</span></span>");  
                    jsUserName = $("#jsUserName").val();  
                }  
            }  
        });
$(function()
  {
   var jsUserName = "";
   if($.browser.msie) // IE浏览器
   {
    $("#userName").get(0).onpropertychange = setJsUserName;
    $("#jsUserName").get(0).onpropertychange = handle;
   }
   else // 其他浏览器
   {
    var intervalName; // 定时器句柄
    $("#userName").get(0).addEventListener("input",setJsUserName,false);
   
    // 获得焦点时,启动定时器
    $("#userName").focus(function(){
     intervalName = setInterval(handle,1000);
    });
    // 失去焦点时,清除定时器
    $("#userName").blur(function()
    {
     clearInterval(intervalName);
    });
   }
   
   // 设置jsUserName input的值
   function setJsUserName()
   {
    $("#jsUserName").val($(this).val());
   }
   
   // jsUserName input的值改变时执行的函数
   function handle()
   {
    // IE浏览器此处判断没什么意义,但为了统一,且提取公共代码而这样处理。
    if($("#jsUserName").val() != jsUserName)
    {
     $("#toolTip").remove();
     $("#jsUserName").parent().append("<span id='toolTip'>看到这里的信息表明,通过js改变input的值也能响应相应事件:<span  style="color:red;" mce_style="color:red;">" + $("#jsUserName").val() + "</span></span>");
     jsUserName = $("#jsUserName").val();
    }
   }
  });
不知道是不是你想问的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧