JQuery, такая же функция для нескольких идентификаторов - программирование
Подтвердить что ты не робот

JQuery, такая же функция для нескольких идентификаторов

Я хочу очистить указанный ввод, если значение не является числом. функция работает для одного 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>
4b9b3361

Ответ 1

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

Ответ 2

Вы можете использовать запускает селектор вместо ввода нескольких идентификаторов:

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

Ответ 3

$('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. А также a 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('');

        }
    }
});

Ответ 5

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

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

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

$('.A').keyup