выберите идентификатор, указанный в условии if для селектора

0

У меня есть следующий код

if($('#contact_name').val()==''){
$('#contact_name').closest('div').append('<p class="validate">name must be entered</p>');
error=true;
}
if($('#contact_add').val()==''){
$('#contact_add').closest('div').append('<p class="validate">address must be entered</p>');
error=true;
}
if($('#contact_mail').val()==''){
$('#contact_mail').closest('div').append('<p class="validate">mail must be entered</p>');
error=true;
}
if($('#contact_ph').val()==''){
$('#contact_ph').closest('div').append('<p class="validate">type your phone number</p>');
error=true;
}

Я должен менять каждый раз, когда селектор $ ('# contact_name'), $ ('# contact_add'),.... есть, так или иначе, что в том случае, если условие id, я могу выбрать это.....

Я уверен, что не могу использовать $ (это).....

Теги:

5 ответов

2

Попробуйте это, используя селектор jQuery " начинается с ":

$('*[id^="contact_"]').each(function () {
    if (this.value == '') {
        $(this).closest('div').append('<p class="validate">some text</p>');
        error = true;
    })
};

Я использовал * для таргетинга на все элементы, вы можете заменить его на div, p или что лучше соответствует вашим элементам.

  • 0
    Это научит меня публиковать простой ответ и намереваться редактировать, чтобы улучшить ... +1 :)
  • 0
    @DavidThomas, вы публикуете отличные ответы :), теперь у вас даже есть ответ с 2 вариантами ... +1 к вам :)
1

Вы можете использовать each() и множественный выбор:

$('#contact_name, #contact_add').each(function(){
    if (this.value == '') {
        $(this).closest('div').append('<p class="validate">some text</p>');
    }
});

Или, используя filter() выберите эти input без значения:

$('div[id^="contact"]').filter(function(){
    return this.value == '';
}).closest('div').append('<p class="validate">some text</p>');

При последнем подходе вы можете даже присвоить переменную error (если это необходимо):

var error = $('div[id^="contact"]').filter(function(){
        return this.value == '';
    }).closest('div').append('<p class="validate">some text</p>').length > 0;

Рекомендации:

0

Я предполагаю, что идентификаторы имеют элементы формы (ввода). Если это так, вы можете перебирать элементы ввода следующим образом:

$('[id^="contact_"]').each(function () {
    if (this.value == '') {
        $(this).closest('div').append('<p class="validate">some text</p>');
        error = true;
    })
};
0

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

$(document).ready(function(){
    $("#ttt").submit( function(){
        if($('#contact_name').val()==''){
        $('#contact_name').closest('div').append('<p class="validate">some text</p>');
        error=true;
        }
        if($('#contact_add').val()==''){
        $('#contact_add').closest('div').append('<p class="validate">some text</p>');
        error=true;
        }
        if($('#contact_mail').val()==''){
        $('#contact_mail').closest('div').append('<p class="validate">some text</p>');
        error=true;
        }
        if($('#contact_ph').val()==''){
        $('#contact_ph').closest('div').append('<p class="validate">some text</p>');
        error=true;
        }
        return false;
    });
});
0

Добавьте класс к требуемым элементам, как это required затем

var error = $('.required').filter(function () {
    return $.trim($(this).val()) == '';
}).closest('div').append('<p class="validate">some text</p>').length > 0;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню