jQuery,多个id的相同功能

时间:2012-06-22 06:30:11

标签: javascript 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>

6 个答案:

答案 0 :(得分:28)

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

答案 1 :(得分:10)

您可以使用选择开头,而不是像这样输入多个ID:

$('[id^=d]')

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

答案 2 :(得分: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]是选择器的开头,意味着idd开头。

了解 jQuery start selector

答案 3 :(得分:4)

您忘记了#的{​​{1}}。还有d2 & d3

this

答案 4 :(得分:4)

您可以添加类属性

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

按类名

使用跟随选择器
$('.A').keyup

答案 5 :(得分:3)

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

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

另见 jQuery Multiple ID selectors