2012-06-22 271 views
14

我想清除指定的輸入,如果該值不是數字。函數適用於一個ID,但我希望它適用於多個。當然我可以多次寫函數,但我不想這樣做。jQuery,多個ID相同的功能

以下代碼僅對輸入ID爲「d」的輸入有效。我不知道如何識別其他ID。誰能幫忙?

<input id="d" /> 

<input id="d2" /> 

<input id="d3" /> 

<script type="text/javascript"> 

$('#d,d2,d3').keyup(function(){ 

if($('#d,d2,d3').val() != "") { 

    var value = $('#d,d2,d3').val().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 

    var intRegex = /^\d+$/; 

    if(intRegex.test(value)) {} 

    else { 


    $(this).val(''); 

    } 



} 

}); 

</script> 

回答

27

代替$('#d,d2,d3')使用$('#d, #d2, #d3')和if語句使用$(this).val()

9

你可以看到使用開始於選擇器而不是投入多個ID是這樣的:

$('[id^=d]') 

以上選擇將用於其ID的開始0​​如d1d2d3等所有元素的工作。

下面是你的代碼應(固定其他錯誤以及):

$('[id^=d]').keyup(function(){ 
if(this.value != "") { 
    var value = this.value.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
    var intRegex = /^\d+$/; 
    if(intRegex.test(value)) {} 
    else { 
     this.value = ''; 
    } 
}  
}); 
+0

@loler選擇以下:啊好的涼 – Sarfraz

+0

這是正確答案的問題...!要命! –

4
$('input[id^=d]').keyup(function() { 
    var val = $.trim(this.value); // or $.trim($(this).val()) 
    if (val != "") { 
     var value = val.replace(/^\s\s*/, '').replace(/\s\s*$/, ''), 
      intRegex = /^\d+$/; 
      if (intRegex.test(value)) { 
       // do something 
      } else { 
       $(this).val(''); 
      } 
    } 
});​ 

[id^=d]與選擇,這意味着,id開始與d一個開始。

閱讀jQuery start selector

4

你忘了#d2 & d3。還有一個this

$('#d,#d2,#d3').keyup(function(){ 

    if($(this).val() != "") { 

     var value = $(this).val().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 

     var intRegex = /^\d+$/; 

     if(intRegex.test(value)) {} 
     else { 
      $(this).val(''); 

     } 
    } 
}); 
4

您可以添加類屬性

<input id="d" class="A"/> 
    <input id="d2" class="A"/> 
    <input id="d3" class="A"/> 

使用的類名

$('.A').keyup