Вопрос по javascript, jquery – jQuery, та же функция для нескольких идентификаторов

14

Я хочу очистить указанный ввод, если значение не число. Функция работает для одного идентификатора, но я хочу, чтобы он работал для нескольких. Конечно, я могу написать функцию несколько раз, но я не хочу этого делать.

следующий код вступает в силу только для ввода с идентификатором & quot; d & quot ;. Я не знаю, как определить другие идентификаторы. кто-нибудь может помочь?

<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   ответов
10

Ты можешь использоватьstarts with селектор вместо ввода нескольких идентификаторов, как это:

$('[id^=d]')

Выше селектор будет работать для всех элементов, чьи идентификаторы начинаются сd напримерd1, d2, d3 и так далее.

Вот как должен выглядеть ваш код (исправляя и другие ошибки):

$('[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 = '';
    }
 }    
});
Это правильный ответ на вопрос ...! Awsome!
@loler: Ах, хорошо, круто
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

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

        }
    }
});
3

Вы забыли хеш для двух других идентификаторов:

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

смотрите также JQuery несколько идентификаторов селекторов

4

Вы можете добавить атрибут класса

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

использовать следующий селектор по имени класса

$('.A').keyup
28

Вместо$('#d,d2,d3') использование$('#d, #d2, #d3') и для использования оператора if$(this).val()

Похожие вопросы