14

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

以下代码仅对 id 为“d”的输入生效。我不知道如何识别其他身份。谁能帮忙?

<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>
4

6 回答 6

30

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

于 2012-06-22T06:31:47.450 回答
9

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

$('[id^=d]')

上面的选择器将适用于所有以 id 开头的元素,例如d,d1等等。d2d3

这是您的代码应该是这样的(也修复其他错误):

$('[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 = '';
    }
 }    
});
于 2012-06-22T06:33:25.883 回答
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 开始选择器的信息

于 2012-06-22T06:33:26.767 回答
4

你忘记了#for 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('');

        }
    }
});
于 2012-06-22T06:34:31.290 回答
3

您忘记了其他两个 ID 的哈希:

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

另请参阅 jQuery 多 ID 选择器

于 2012-06-22T06:32:42.467 回答
3

您可以添加类属性

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

按类名使用以下选择器

$('.A').keyup
于 2012-06-22T06:35:04.290 回答