2012-10-23 63 views
3

我有一個名爲email class keyup-an的輸入字段。我通過這個方法驗證了它的簡單性,但它可以工作,或者當一個人手動輸入字段時。我如何使它也適用於選擇歷史數據。當你點擊電子郵件,昨天你把[email protected],歷史列表下降,你可以選擇它,但它不是一個keyup。jQuery歷史輸入選擇(簡單)

我用.change或.click之後試過相同的功能,但它沒有工作。你們可以請建議?VALID

$('.keyup-an').keyup(function() { 
    $('span.error-keyup-1').hide(); 
    var inputVal = $(this).val(); 
    var numericReg = /^[a-zA-Z0-9_ ]{2,30}$/; 
    if(!numericReg.test(inputVal)) { 
     $(this).css('background', '#FAC3C3'); 
     $(this).after('<span class="error error-keyup-1">Validationfail</span>'); 
    } 
    else { 
     $(this).css('background', 'lightgreen'); 
    } 
}); 

jquery history

回答

1

您可以通過

autocomplete='off' 

例如

<form name="form1" id="form1" method="post" autocomplete="off"> 

做到這一點,或者嘗試類似

$(input).autocomplete().keyup(function(event) { 
    event.stopPropagation(); 
}).keydown(function() { 
$(this).autocomplete('search', $(input).val()); 
}); 

良好的閱讀

How to Turn Off Form Autocompletion

+0

哈哈不錯,但如果可能的話,我想自動完成仍然可以工作 – Val

+0

@Val你可以像這樣'$('#form1')。attr('autocomplete','off');' –

+1

我認爲男人唯一真正的辦法是關閉自動完成 – Val

1

如果我理解正確的話,你想,如果你點擊自動完成的項目,其被觸發的事件。

這是一個已知的錯誤,看看這篇文章關於一個jQuery插件,我認爲這正是你所需要的:

http://furrybrains.com/2009/01/02/capturing-autofill-as-a-change-event/

+0

我試圖實現這個測試,但不能得到它的工作。有什麼建議? – Val

+0

您是否將方法更改爲更改事件?在建議的方法中,$(this).trigger('change')被調用,所以你需要改變你的方法爲$('。keyup-an')。change(function(){..你有錯誤嗎? – NthDegree

0

而不是你的功能結合到keyup事件..也許綁定它改變事件? 好的..這不適用於某些瀏覽器,它似乎..你可以參考以前的答案,並使用該解決方案,它基本上創建一個計時器來檢查間隔的值來檢測更改。如果您希望驗證發生得非常快,可以強制瀏覽器執行大量工作。或者,您可以啓用自動完成功能,並強制用戶像第一個回答建議那樣手動輸入值。