2014-03-24 77 views
0

我有一個表格,其中最後一列的輸入用戶能夠輸入一筆錢。這個數量被評估,如果它不好,一個alert()消息出現,輸入val()設置爲$ 0.00,這個相同的輸入應該集中,但它似乎focus()功能不起作用。輸入沒有被集中

代碼在我看來是正確的,當我用螢火蟲調試時有時候其他人不會。當我在螢火蟲控制檯上輸入$("ID").focus()時,它工作正常。我想知道世界上是否有這樣的人可以幫助我解決這個問題!

$('#table [type=text]').val('$ 0,00').keyup(function() { 
    amf2005_BecameCurrency(this, 20); 
}).blur(function() { 
    if (!validate($(this).val())) { 
     $(this).val('0,00'); 
     $(this).focus(); 
    } 
    amf2005_BecameCurrency(this, 20); 
    $(this).val("$ " + this.value); 
}); 
+0

如果要將輸入集中在頁面加載上,或者鏈接在「觸發器('focus')上,請添加'autofocus'屬性。您所擁有的東西在模糊之前不會將輸入聚焦。 – adeneo

+0

第一件事:緩存你的jquery對象! 'var button = $(this);' – Jason

+0

觸發器有點太快了。好搭檔隊友。 – ORION

回答

0

這是一個有教養的猜測!

在您提供的代碼中,您正在調用「模糊」事件處理程序中的「焦點」事件。我不確定這是否允許,但有一個簡單的方法可以看到。

嘗試setTimeout(function() { $(this).focus(); }, 0)

更換$(this).focus()使用具有零延遲的setTimeout函數應該讓瀏覽器移動焦點向右走,但代碼將不再模糊處理程序的上下文中執行。

此外,您提到了警報功能。僅供參考,像jQuery UI這樣的庫提供了將風格化對話框作爲頁面一部分繪製的功能。這些被認爲優於使用警報功能。

+0

嗨,@Daniel Allen Langdon,我已經嘗試了使用setTimeout()的這種方法,但是不幸的是它沒有工作。但感謝您的幫助。當我解決這個問題時,我會讓你們知道! –

相關問題