2010-03-02 131 views
1
$("#htxtEmoney, #htxtPoint").keypress(function(e){ 
    var evt = window.event ? window.event : e; //for compatibility 
    var keyCode = evt.keyCode ? evt.keyCode : e.which; 
    if (keyCode == 13 || keyCode == 27 || keyCode == 8) return ; // esc, enter 
    if (48 <= keyCode && keyCode <= 57) 
     return true; // number 

    alert("You can write only Number."); 

    this.focus(); 
    return false; 
}).blur(function(e){ 
    Payments.onChangePoint(this); 
}); 

这是我写的代码。jquery.blur()NOT in alert()

如果用户输入字母,则发生alert()

然后blur()功能也会发生。

但我想,如果用户输入字母,alert()发生,然后blur()功能不会发生在这种情况下。

我的意思是blur()功能只出现在用户点击其他控制..

我的英文不好对不起。谢谢。

回答

4

警报会将焦点从任何有焦点的位置移开,因此会自动导致模糊。您不能有不会导致模糊发生的警报。

对您的问题的更好解决方案是不会导致警报,而是在输入旁边或下方显示消息。这将通知用户该错误并且不会失去对输入的关注。

+0

谢谢。我将在输入框中显示msg-div。我认为这是最好的方法。 – 2010-03-02 04:24:56

0

你可以添加一个变量,这两个功能可以访问,任外面,像

var izError = false; 

,并设置为true时,你显示警报(izError = true;)。

​​

然后测试它做你的onblur东西之前:

if (izError == false) { 
    Payments.onChangePoint(this); 
} 
+0

谢谢。你的解决方案也是很好的解 – 2010-03-02 04:27:39