2011-11-14 51 views
2

例如,我們有一個用於博客標籤的文本框。我想要的是我想限制數量的標籤是有限的。 例如,「虛擬主機,PHP,Windows8」。 當用戶嘗試輸入另一個文本框時,他將以逗號開頭,該文本框不會讓他編寫它。如何限制文本框中少於3個逗號?

+3

如果你要我爲雅寫代碼我不會,如果你想得到的概念,我會幫你,嘗試趕上keyup事件和過濾逗號,當它達到極限,防止任何其他逗號插入 – Qchmqs

回答

4

在您的keypress處理程序中,捕獲event對象並執行;

if (event.which == 44 && $(this).val().split(",").length > 2) { 
    event.preventDefault(); 
} 

看到它的行動在這裏; http://jsfiddle.net/5L7mU/

+0

+1智能使用' split()' – Tadeck

+0

偉大的解決方案。非常感謝。 – SNaRe

+0

+1非常好,智能解決方案 – Qchmqs

0
$(document).ready(function(){ 
    $('#textbox').keypress(function(e){ 
     var text = $(this).val(); 
     if(text.split(',').length>3){ 
      return false; 
     }else if(e.which==44&&text.split(',').length>2){ 
      return false 
     } 
    }); 
}); 

小提琴:

http://jsfiddle.net/L4X4C/

2

我們可以分裂這一問題成3點較小的問題。

首先,我們需要一種方法來阻止用戶將東西寫入文本框。當您在keypress上掛鉤回叫時,傳遞的事件有一個名爲preventDefault的方法,該方法應該可以完成這項工作。因此,要阻止所有輸入:

$("input").keypress(function(event) { 
    event.preventDefault(); 
}); 

現在,檢查有多少昏迷目前已經有在文本框中,我們可以使用正則表達式。如果沒有匹配,match函數將返回null而不是空數組,因此我們需要檢查該數組。

$("input").keypress(function(event) { 
    var matches = $(this).val().match(/,/g); 
    var count = 0; 
    if (matches) 
     count = matches.length; 
    console.log(count); 
}); 

最後,我們需要能夠檢查用戶是否輸入了昏迷狀態。 event對象將擁有一個名爲which的屬性,其中包含輸入字符的關鍵代碼。隨着探索的一點點,你可以發現,對於昏迷的鍵碼是44.

$("input").keypress(function(event) { 
    if (event.which == 44) 
     event.preventDefault(); 
}); 

因此,如果我們把它放在一起:

$("input").keypress(function(event) { 
    var matches = $(this).val().match(/,/g); 
    var count = 0; 
    if (matches) 
     count = matches.length; 

    if (count >= 2 && event.which == 44) 
     event.preventDefault(); 
}); 

http://jsfiddle.net/4wn5W/

+0

好解決方案一步一步的解釋。現在我知道這是如何運作的。謝謝。 – SNaRe

+0

@SNaRe沒問題。不要忘記使用答案旁邊的箭頭感謝人們的貢獻,並選中複選標記以標記找到的答案,幫助您最有效地解決問題。 –