<asp:TextBox ID="txtUser" runat="server" MaxLength="20" Width="150px"
TabIndex="3" onchange="OnUserChange(this.value,this.id);"></asp:TextBox>
function OnUserChange(str,ctl)
{// debugger
if(str == '1')
{
document.all(ctl).value = '';
}
else
{
// 其它的一些操作
}
}在txtUser中输入1,失去焦点后,txtUser会自动变为空.
但,此时如果再在txtUser输入1,发现onchange事件没有触发.放了debugger,发现确实是没有进入函数.就是没有触发.
如果输入其它内容,会触发!
TabIndex="3" onchange="OnUserChange(this.value,this.id);"></asp:TextBox>
function OnUserChange(str,ctl)
{// debugger
if(str == '1')
{
document.all(ctl).value = '';
}
else
{
// 其它的一些操作
}
}在txtUser中输入1,失去焦点后,txtUser会自动变为空.
但,此时如果再在txtUser输入1,发现onchange事件没有触发.放了debugger,发现确实是没有进入函数.就是没有触发.
如果输入其它内容,会触发!
function OnUserChange(str,ctl)
{// debugger
if(str == '1')
{
document.all(ctl).value = '';
}
else
{
// 其它的一些操作
}<asp:TextBox ID="txtUser" runat="server" MaxLength="20" Width="150px"
TabIndex="3" onChange="OnUserChange(this.value,this.id);"></asp:TextBox>
是与上一次值不同呀!
第一次输入1后,会将txtUser置于空。所以这时,txtUser的值是空值。
再输入1,其实应该是由空变为1,应该会发生onchange事件呀!
用settimeout来延时一秒, 实现查询。
如果再次按键, 并且上一次的Timeout还没走完,
cancel掉上一次的并且重新开一个settimeout。这样就导致了, 连续输入, 可以优化下, 不查询。
一旦停止输入, 就开始查询。比onchange, onblur都好用。
<!--
哈哈,是可以的哦,不信你瞧瞧~
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Question from CSDN</title>
<script type="text/javascript">
function OnUserChange(str,ctl)
{// debugger
if(str == '1')
{
document.all(ctl).value = '';
}
else
{
// 其它的一些操作
}
}
</script>
</head>
<body>
<form runat="server" id="frmIT">
<asp:TextBox ID="txtUser" runat="server" MaxLength="20" Width="150px"
TabIndex="3" onchange="OnUserChange(this.value,this.id);"></asp:TextBox>
</form>
</body>
</html>
LZ需求的是OnBlure而不是OnChanger
onchange 也是在失去焦点后触发的!还有很多同学说我输入的值是和上一次的值相同。 不知道这些同学有没有看清楚我的描述!
文本框中的值是这么改变的:
1 ----> 空 ----> 1
其中的“空”是在第一次输入1后由JS修改的!
第二次输入1后,我本以为文本框的值会再次被JS置于空。
但却没有! 问题就在这里
这要看浏览器是怎么处理的onchange(),在IE下,value值改变了,再失去焦点的时候就会触发onchang(),所以没法获取焦点的时候onchang()不起作用。但是,当这种情况的时候是不会触发的,就是通过页面脚本修改了其value值是不触发onchang(),onchang捕获不到,这个情况的原因就不清楚了。不过IE还一个函数onpropertychange()能够及时捕获这种value的改变,只有IE有这个函数,局限性很大。
<asp:TextBox ID="txtUser" runat="server" MaxLength="20" Width="150px"
TabIndex="3" onpropertychange="OnUserChange(this.value,this.id);"></asp:TextBox>