jQuery,多个id的相同function

我想清除指定的输入,如果值不是数字。 函数适用于一个ID,但我希望它适用于多个ID。 当然,我可以多次写函数,但我不想这样做。

以下代码仅对id为“d”的输入生效。 我不知道如何识别其他ID。 有人可以帮忙吗?

    $('#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(''); } } });  

而不是$('#d,d2,d3')使用$('#d, #d2, #d3')而if语句使用$(this).val()

您可以使用选择器的启动而不是像这样放入多个ID:

 $('[id^=d]') 

上面的选择器适用于所有以ids开头的元素,例如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 = ''; } } }); 

您可以添加类属性

     

按类名使用以下选择器

 $('.A').keyup 
 $('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]是选择器的开头,表示idd开头。

阅读jQuery启动选择器

你忘记了# d2 & d3 。 还有一个。

 $('#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(''); } } }); 

你忘了其他两个ID的哈希:

 $('#d,#d2,#d3') 

另请参阅jQuery Multiple ID选择器