2012-06-22 110 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