一、onChange事件只有在值改变时才可触发,所以必须在每一次选择时(尤其第一次)保证选择的值是改变的!

所以<select name="inv_payee" id="ECS_INVPAYEE" onchange="show_payee();" style="border:1px solid #ccc;">
    <option value="个人" selected >个人</option>  //在这要选定一个默认的值 "selected"

<option value="单位">单位</option>
    </select>

这样在选择第二个时,值就会变即可触发onChange;

二、我们用Select的onchange事件时,常会遇到这样一个问题,那就是连续选相同一项时,不触发onchange事件.select的onchange事件就是这样子的.你得有Change(改变),才能触发该事件....
<select name=sel onchange="bao(this.options[this.options.selectedIndex].value)">
<option value="">请选择
<option value="1">Item 1
<option value="2">Item 2
<option value="3">Item 3
</select>
<script>
function bao(s)
{
txt.value =s;
//选择后,让第一项被选中,这样,就有Change啦.
document.all.sel.options[0].selected=true;
}
</script>
<textarea id=txt></textarea>
三、

js中onchange事件是在客户端改变输入控件的值,比如一个textbox,会出发的一个事件。但是如果在js代码中改变一个textbox的value,而不是通过键盘输入改变一个textbox值的话,是不会出发onchange事件的。

那么,如何在js代码模式通过代码触发textbox控件的onchange事件呢,经过查阅资料,发现js提供了一个方法,可以触发控件的应该是所有事件。object.fireEvent()方法,使用方法如 object.fireEvent('onchange'),即可触发控件的onchange事件。

同理,js中使用fireEvent方法还可以触发其他的空间事件。

触发onchange事件的问题,并不是值一旦更改就会触发onchange事件。
对于onBlur和onFocus可以直接调用object.Blur()和object.Focus(),但javascript中没有object.Change
事件。

1.ie 处理1

document.getElementByIdx_x('hid_provider_id').attachEvent("onpropertychange",function(){alert('gggg');});

2.object.fireEvent()可以触发事件,如触发onchange事件则是object.fireEvent('onchange'),以此类推。

例:
  <SELECT   id=select1     onchange="alert(this.value)">  
  <OPTION   value="0">0</OPTION>  
  <OPTION   value="1">1</OPTION>  
  <OPTION   value="2">2</OPTION>  
  </SELECT>  
   
  <INPUT   type="text"   id=text1   name=text1>  
  <INPUT   type="button"   value="Button"   onclick="select1.selectedIndex=text1.value"> 
  手动改变select的值,会触发onchange  
  脚本改变selectedIndex,不会触发onchange
解决办法
if   (select1.fireEvent)  
      select1.fireEvent("onchange")  
  else  
      select1.onchange()

<INPUT   type="button"   value="Button"   onclick="select1.selectedIndex=text1.value;
select1.fireEvent('onchange')">
程序,里因为程序里有多个action里并每个action有多个submit按钮事件,为了区别代码,同时页面隐藏
按钮
<select name="select" onchange="document.getElementByIdx_x('seaoldsubmit').click();">
<option value="0">查询条件</option>
......
</select>
<input type="submit" name="seaoldsubmit" value="确定" style="display:none">
if(submitcheck('seaoldsubmit'))

四、最近项目中遇到一个问题,要用js去触发onchange事件。
上网找了一些资料,IE上有onpropertychang事件,可以用js去触发这个事件,但是Firefox不支持这个事件,
然后在firefox中去绑定一个input事件。但是这是无效的啊,仍然不会去触发onchange事件。
最后只能用未解决方案了!

用js修改值的时候,在js执行修改完之后去执行onchange事件,不过这样即使这个值不改变的话也会调用这个方法。

function handle()
{document.getElementByIdx_x('msg').innerHTML='输入的文字长度为:'+document.getElementByIdx_x('txt').value.length;
}
//firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。
if(/msie/i.test(navigator.userAgent))    //ie浏览器
{document.getElementByIdx_x('txt').onpropertychange=handle
}
else
{//非ie浏览器,比如Firefox
document.getElementByIdx_x('txt').addEventListener("input",handle,false);
}
</script>
</head>

<body id="mybody" class="index">
<div id="msg"></div>
<input id='txt' value="" />

以上为测试代码。

select的onChange事件问题解决的更多相关文章

  1. select的onchange事件获取不了option的value

    一,select的onchange事件获取不了option的value是当你使用JQ($("#xxx").val())方法的获取的值一直提示undefined 二,解决方法: va ...

  2. 关于两栏布局,三栏布局,一级点击三角触发select的onchange事件问题

    首先看这样一个效果:,这个截图来自移动端的列表的一整行,在这个效果当中,存在两个技术点,首先选择祝福卡这个宽度是一定的,右边的部分,宽度随着手机屏幕的宽度而自适应,再一个技术点就是点击最右侧向下箭头, ...

  3. html input的file文件输入框onchange事件触发一次失效解决方法

    最近在做一个图片上传的功能,出现提交一次后,file输入框的change事件无法再次触发的bug,就是说提交一次后必须刷新才能再次提交,这就坑了~ 于是想办法解决它~ 在网上找了一些资料,找到这几种方 ...

  4. js 触发select onchange事件

    select 或text的onchange事件需要手动(通过键盘输入)改变select或text的值才能触发,本文为大家介绍下使用js触发select onchange事件select 或text的o ...

  5. select标签的onchange事件

    /** @1.onchange事件 ==> select选择事件* @2.obj.options ==> 选择option集合* @3.obj.selectedIndex ==> 选 ...

  6. onchange事件可以使用于: <input>, <select>, 和 <textarea>。

    onchange 事件会在域的内容改变时发生. onchange 事件也可用于单选框与复选框改变后触发的事件.

  7. 使用JQuery UI selectmenu, onchange事件失效

    今天, 在用jQuery UI的一套东西是发现<select class="dropmenu" onchange="do();"></sele ...

  8. 关于input的file框onchange事件触发一次失效的新的解决方法

    在google了众多方法后,网上有这么几种方法: 1.替换掉原来的input框 2.remove原来的input框,然后在添加进新的一样的input框 但是不知道为什么非常不幸的是,怎么弄我都弄不出. ...

  9. 为什么Jquery对input file控件的onchange事件只生效一次

    今天在做jquery对input file控件的onchange事件进行监听,就一直只生效一次,不知道Jquery为什么对file控件没有做到每次改变触发onchange事件的效果,但是还是有好几种解 ...

随机推荐

  1. 四元数(Quaternion)和旋转

    四元数介绍 旋转,应该是三种坐标变换——缩放.旋转和平移,中最复杂的一种了.大家应该都听过,有一种旋转的表示方法叫四元数.按照我们的习惯,我们更加熟悉的是另外两种旋转的表示方法——矩阵旋转和欧拉旋转. ...

  2. 一款基于jquery的下拉点击改变背景图片

    今天给大家介绍一款基于jquery的下拉点击改变背景图片.单击右上角的图片,下拉显示可选择的背景图片,单击图片变为背景图.效果图下: 在线预览   源码下载 实现的代码. html代码: <a ...

  3. linux shell “(())” 双括号运算符使用

    导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格 ...

  4. jquery动态生成css样式表

    $(function(){     var a=new Date().getTime();// 实时加载,目的是清除缓存    $("head").append('<link ...

  5. C# 自定义重绘DataGridView

    using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using Syste ...

  6. 2013年arcgis培训

    关于开展“GIS空间分析及应用案例解析”培训班的通知   各企事业单位: 随着信息技术的发展,地理信息系统(简称GIS)产业异军突起,在国民经济各个行业中的应用日益广泛,物联网.智慧地球.3S技术等等 ...

  7. UIScrollView,contentOffset,contentInsert的各自特点和区别?

    • UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容   设置UIScrollView的contentSize属性,告诉UIScrollView ...

  8. jQuery中each的break和continue

    each实质上是一个for循环,那么能不能像普通的for循环那样break和continue呢? 参考http://bevisoft.iteye.com/blog/641195做了个实验,可以的, 代 ...

  9. 判断当前是否运行于Design Mode

    在使用Visual Studio设计XAML时,设计器运行在[设计时]状态.VS在内部运行这些代码,帮你把界面的类真实效果展示出来.一般情况下也不会有什么问题,但是当代码中存在外部资源时,XAML可能 ...

  10. 剑指Offer05 用栈模拟队列

    添加了模板类应用 /************************************************************************* > File Name: ...