最近在做的程序中需要这样的一个功能:当HTML文本框内容生发变化时执行JavaScript函数.
最初的想法是使用onchange,但这个事件只有当文本框失去焦点时才会触发,后来就找到了onpropertychange事件.如下:
但很快发现存在问题.在使用微软拼音输入法和部分五笔输入法时,每次有键按下都会触发onpropertychange事件.
想来想去,改于onkeyup事件加判断条件来处理,代码如下:
由一个变量 sOldValue记录文本框原始值, onKeyUp 时,判断新值与原始值比较是否有发生变化.若有变化时,执行相应的处理.
最初的想法是使用onchange,但这个事件只有当文本框失去焦点时才会触发,后来就找到了onpropertychange事件.如下:
<
input
id
="textRoad"
type
="text"
size
="15"
onpropertychange
="alert(this.value);"
>
但很快发现存在问题.在使用微软拼音输入法和部分五笔输入法时,每次有键按下都会触发onpropertychange事件.
想来想去,改于onkeyup事件加判断条件来处理,代码如下:
<
SCRIPT
language
="JavaScript"
>
var sOldValue;
sOldValue = "" ;
function tttt(vNewValue)
{
// alert(vNewValue);
if (sOldValue != vNewValue)
{
alert(vNewValue);
sOldValue = vNewValue;
}
}
</ script >
< body " >
<!-- <input id="textRoad" type="text" size="15" onpropertychange="alert(this.value);"> -->
< input id ="textRoad" type ="text" size ="15" onKeyUp ="tttt(this.value)" >
</ body >
var sOldValue;
sOldValue = "" ;
function tttt(vNewValue)
{
// alert(vNewValue);
if (sOldValue != vNewValue)
{
alert(vNewValue);
sOldValue = vNewValue;
}
}
</ script >
< body " >
<!-- <input id="textRoad" type="text" size="15" onpropertychange="alert(this.value);"> -->
< input id ="textRoad" type ="text" size ="15" onKeyUp ="tttt(this.value)" >
</ body >
由一个变量 sOldValue记录文本框原始值, onKeyUp 时,判断新值与原始值比较是否有发生变化.若有变化时,执行相应的处理.
现在基本实现了要达到的目标.唯一的遗憾是:微软拼音比较诡异,是先把字输入到文本框,再由用户选择,再修改文本框内的值.
转自:http://www.cnblogs.com/cime63/archive/2007/03/08/668098.htmlw