select的onChange事件问题解决
一、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事件问题解决的更多相关文章
- select的onchange事件获取不了option的value
一,select的onchange事件获取不了option的value是当你使用JQ($("#xxx").val())方法的获取的值一直提示undefined 二,解决方法: va ...
- 关于两栏布局,三栏布局,一级点击三角触发select的onchange事件问题
首先看这样一个效果:,这个截图来自移动端的列表的一整行,在这个效果当中,存在两个技术点,首先选择祝福卡这个宽度是一定的,右边的部分,宽度随着手机屏幕的宽度而自适应,再一个技术点就是点击最右侧向下箭头, ...
- html input的file文件输入框onchange事件触发一次失效解决方法
最近在做一个图片上传的功能,出现提交一次后,file输入框的change事件无法再次触发的bug,就是说提交一次后必须刷新才能再次提交,这就坑了~ 于是想办法解决它~ 在网上找了一些资料,找到这几种方 ...
- js 触发select onchange事件
select 或text的onchange事件需要手动(通过键盘输入)改变select或text的值才能触发,本文为大家介绍下使用js触发select onchange事件select 或text的o ...
- select标签的onchange事件
/** @1.onchange事件 ==> select选择事件* @2.obj.options ==> 选择option集合* @3.obj.selectedIndex ==> 选 ...
- onchange事件可以使用于: <input>, <select>, 和 <textarea>。
onchange 事件会在域的内容改变时发生. onchange 事件也可用于单选框与复选框改变后触发的事件.
- 使用JQuery UI selectmenu, onchange事件失效
今天, 在用jQuery UI的一套东西是发现<select class="dropmenu" onchange="do();"></sele ...
- 关于input的file框onchange事件触发一次失效的新的解决方法
在google了众多方法后,网上有这么几种方法: 1.替换掉原来的input框 2.remove原来的input框,然后在添加进新的一样的input框 但是不知道为什么非常不幸的是,怎么弄我都弄不出. ...
- 为什么Jquery对input file控件的onchange事件只生效一次
今天在做jquery对input file控件的onchange事件进行监听,就一直只生效一次,不知道Jquery为什么对file控件没有做到每次改变触发onchange事件的效果,但是还是有好几种解 ...
随机推荐
- php demo
//上一周最后一天,上一个月最后一天: $y = date('Y',strtotime($endTime)); $m = date('m',strtotime($endTime)); ...
- docker 中运行 sshd 服务
创建Dockerfile # sshd # # VERSION 0.0.2 FROM ubuntu:14.04 MAINTAINER admln <admln@docker.com> RU ...
- [C.Sharp] TimeSpan的用法,获取测试程序运行时间
TimeSpan的用法 TimeSpan是用来表示一个时间段的实例,两个时间的差可以构成一个TimeSpan实例,现在就来简单介绍一下几点重要的用法: a 先来介绍几个方法 TimeSpan.Minu ...
- MVC+easyui 完整实现
学习mvc半月有余,趁几天假期,没事做就动手做一个完整的网站玩玩,顺便和上家公司的方法做个比较.页面引擎采用mvc自带的功能,建立视图,交给.net自带渲染出页面(对比:上家公司采用的第三方组件渲染的 ...
- JS中String类型转换Date类型 并 计算时间差
JS中String类型转换Date类型 1.比较常用的方法,但繁琐,参考如下:主要使用Date的构造方法:Date(int year , int month , int day)<script& ...
- Umbraco(1) - Document Types(翻译文档)
Document Types Data first nothing in = nothing out! 任何网站的第一步是创建一个"Document Type"-几次安装后你会熟悉 ...
- Android 使用动态加载框架DL进行插件化开发
http://blog.csdn.net/t12x3456/article/details/39958755/ 转载自: 时之沙: http://blog.csdn.net/t12x3456
- 转:实体ToolTip显示XData
首先要说明,实现方式不是我的原创,其中ToolTip的实现转自这里,然后XData的设置和获取来自Kean的博客,当然我自己也做了点研究,在这里,然后把这两个技术结合起来就是你将要看到的东西. 先上效 ...
- c#中的方法的定义和运用
首先,理解下,函数和方法: 其实两者是一样的,只是个叫法不同. C#中叫做Method,中文叫方法: C++中称为Function,中文叫函数. 函数是Function,多指以前面向过程编程时候,将逻 ...
- 二维码zxing源码分析(一)camera部分
首先,我们先把zxing的源代码给下载下来,这个网上有很多,我下载的是2.3的,不得不说这个谷歌提供的包包含的功能还是很全面的. 我把下载的包解压后,找到android文件夹,导入到ecpli ...