Input 控件的Onchange 与onBlur 事件区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Input 控件的Onchange 与onBlur 事件区别?相关的知识,希望对你有一定的参考价值。

onchange是在被改动的对象(如textbox)的值发生改变,并失去焦点的时候触发事件的,只比较对象的初始状态和改变后的状态(失去焦点后的状态)
onBlur
失去焦点时触发
参考技术A onchange 是指控件的值发生改变且失去焦点时触发的事件

onblur 是不管值有无改变,失去焦点就触发事件
参考技术B onchange 是 INPUT 中的文本 修改后 然后离开这个INPUT焦点后触发。
ONBLUR 是 离开这个INPUT 后 直接触发。
参考技术C onchange 是 INPUT 中的文本修改后,当你把鼠标焦点移出后触发
ONBLUR 是 把鼠标光标放进input 时触发

vue下拉框如何控制onblur和onchange

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

所以<select name=”inv_payee” id=”ECS_INVPAYEE” οnchange=”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 οnchange=”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)
undefined
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 οnchange=”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” οnclick=”select1.selectedIndex=text1.value”>
手动改变select的值,会触发onchange
脚本改变selectedIndex,不会触发onchange
解决办法
if (select1.fireEvent)
select1.fireEvent(“onchange”)
else
select1.onchange()

<INPUT type=”button” value=”Button” οnclick=”select1.selectedIndex=text1.value;
select1.fireEvent(‘onchange’)”>
程序,里因为程序里有多个action里并每个action有多个submit按钮事件,为了区别代码,同时页面隐藏
按钮
<select name=”select” οnchange=”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”>
<div id=”msg”></div>
<input id=’txt’ value=”” />

以上为测试代码。

五.onfocus实现了任意点击,在数据库了也只查询一次

六。onmousedown 单击一次就查询一次,所以每选择一次就查询一次,增加了数据库的负担。

以上是关于Input 控件的Onchange 与onBlur 事件区别?的主要内容,如果未能解决你的问题,请参考以下文章

[TimLinux] JavaScript input框的onfocus/onblur/oninput/onchange事件介绍

vue下拉框如何控制onblur和onchange

js 鼠标事件中 Onchange 与onBlur 我感觉是一样的,有啥区别

hidden类型的input控件onchange事件为何不起作用?

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

Ant 设计 Form validateTrigger 动态从“onBlur”变为“onChange”