2010-05-11 16 views
0

jQuery的輸入字段更改背景,如果文本得到我目前使用jQuery來限制一個文本框,如下所示號僅輸入替換

$('input.numbersOnly').keyup(function() { 
     this.value = this.value.replace(/[^0-9\.]/g,''); 
    }); 

我想,讓用戶知道什麼他們正在通過改變字段的背景顏色來拒絕打字。我知道,我可以用這樣的改變字段的背景:

 $('input.numbersOnly').addClass('alertClass'); 

我的問題是,我該如何將二者結合起來代碼示例上面,這樣的磁場變化作爲字符顏色越來越更換?我的目標是提醒用戶在輸入字段時輸入有問題。

謝謝!

+1

時,應在alertClass被刪除? – nickf 2010-05-11 02:08:49

+0

當用戶鍵入「1234a」(減少到「1234」)然後選擇下一個字段時會發生什麼? – 2010-05-11 07:57:44

+0

Nickf - 對此沒有多少考慮,但Nick Craver的解決方案足夠優雅,我喜歡它,所以我正在推進他的建議。 Salman A - 我將它設置爲當用戶選中下一個字段時alertClass被刪除。我用下面的: \t \t $( '輸入')事件的內容(功能(){ \t \t \t $(本).toggleClass( 'alertClass',假); \t \t}); 它適用於我所需要的。 – Yazmin 2010-05-11 14:17:06

回答

2

你可以做這樣的事情:

$('input.numbersOnly').keyup(function() { 
    var newValue = this.value.replace(/[^0-9\.]/g,''); 
    if(this.value !== newValue) $(this).addClass('alertClass'); 
    this.value = newValue; 
}); 

這抓住新的值,確定是否你實際上更換的東西,如果是增加了alertClass。如果你想同時移除上的有效keyup值類,你可以使用.toggleClass(),像這樣:

$('input.numbersOnly').keyup(function() { 
    var newValue = this.value.replace(/[^0-9\.]/g,''); 
    $(this).toggleClass('alertClass', this.value !== newValue); 
    this.value = newValue; 
}); 

這將切換類上使用無效KEYUP,造成了價值的調整,並TOGLE其關閉,如果最後一次按鍵是一個有效的鍵,導致沒有調整。

+0

謝謝尼克。這正是我所需要的,並且您已經很好地解釋了它並鏈接了功能文檔。我很感激。 – Yazmin 2010-05-11 14:15:08

0

像這樣:

$('input.numbersOnly').keyup(function() { 
    var oldVal = this.value; 
    this.value = this.value.replace(/[^0-9\.]/g,''); 
    if (oldVal !== this.value) 
     $(this).addClass('alertClass') 
}); 
+0

謝謝你的回覆。這段代碼也可以工作。 – Yazmin 2010-05-11 14:18:17

相關問題