2012-04-09 26 views
0

我有一個使用jQuery創建動態控件的表單。我已經在使用jQuery的控件上應用了驗證。我正在驗證模糊事件上的控件。這裏的問題是我需要將焦點設置在模糊事件驗證失敗的同一控件上。將焦點設置在模糊事件驗證失敗的同一控件上,JQuery

我做了這樣的事情:

$(propVal1).blur(function() { 
    if(!ValidateNumber(this, propName1)) { 
     alert('Value should be numeric in ' + propName1); 
     setTimeout(function() {$(this).focus();}, 1); 
    } 
}); 

凡propVal1代表動態創建的輸入控制,propName1是屬性的字符串名稱。

+0

爲什麼你現在不能爲你工作? – 2012-04-09 15:25:55

+0

我們可以看到字符串propVal1指的是什麼? – 2012-04-09 15:31:38

+0

是的,因爲驗證正確觸發正確顯示屬性名稱。我這樣做是因爲整個表單是動態生成的。 – IrfanRaza 2012-04-09 15:34:46

回答

1

發生這種情況的原因是,您的輸入控件是窗口中唯一的控件,因此在失去焦點後,整個窗口失去焦點,並且無法將輸入焦點對準沒有焦點的窗口。

這是測試HTML我以確認這一點:

<form> 
    <input id="my_input" type="text" /> 
    <input id="my_input2" type="text" /> 
</form> 

<script type="text/javascript"> 
    $("#my_input").blur(function() { alert('bad input'); setTimeout(function() { $(window).focus(); $("#my_input").focus() }, 1); return false } ); 
</script> 

如果您註釋掉第二個輸入的代碼將無法正常工作!

一種可能的解決方案是在輸入後有一個不可見的輸入,以在第一個模糊時捕捉焦點。