KeyUp事件没有在Firefox中触发,但在IE中运行正常

时间:2012-02-21 17:54:42

标签: .net asp-classic

此代码在IE中正常工作但不是FF。看起来正则表达式匹配功能在FF中无法正常工作。请参阅下面的代码。函数restrictData始终返回true。

protected void Page_Load(object sender, EventArgs e)
{
    textBox.Attributes.Add("onkeyup", "chkTextBox(this)"); 
}

javascript代码**

function chkTextBox(txb) 
{
var bx = document.getElementById(txb.id);
if (restrictData(bx))
 {
     alert('You have used a special character. Please retype your answer without using special characters');
     bx.value = "";
}

}

function restrictData(cnid)
{
var inputValid = true;
 restrictSplChrRegex = "^(a-z|A-Z|0-9)*[^\]$%^&*~!?><.:\;\`/|\['\\\\\\x22]*$"; 
if (cnid.value.match(restrictSplChrRegex)) 
    inputValid =true;
else
    inputValid =false; 
return inputValid;

}

2 个答案:

答案 0 :(得分:0)

只传递

textBox.Attributes.Add("onkeyup", "chkTextBox(this);");

JS

function chkTextBox(textBoxID)
{
     alert('Textbox Value: ' + textBoxID.value);
}

输出

在键盘输入时,我会收到包含输入值的警告框

示例Textbox Value: Pa$$w0rd

我已在IE8,FF,Chrome中测试过。它到处都工作正常。

答案 1 :(得分:0)

你应该先试试这个:

 textBox.Attributes.Add("onKeyUp", "alert('Does it fire at all?')");

我的猜测是可行的。可能FF的属性区分大小写。

我怀疑你发布的代码是否能像你期望的那样工作。以下是通过属性附加事件处理程序的最佳方法:

 textBox.Attributes.Add("onKeyUp", "chkTextBox.apply(this, arguments)");

 function chkTextBox(ev)
 {
      alert("Text box value is: " + this.value);
 }

请注意,在许多浏览器上,由于ev是全局分配的,所以IE上的事件对象event将是未定义的。