选择if if for selector中指定的id

时间:2013-10-04 11:16:19

标签: jquery

我有以下代码

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'),....无论如何,在if条件中id是什么我可以选择... ...

我确定我不能使用$(this).....

5 个答案:

答案 0 :(得分:2)

尝试使用jQuery选择器“starts with”:

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

我使用*来定位所有元素,您可以将其替换为divp或更符合您元素的元素。

答案 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;

参考文献:

答案 2 :(得分:0)

将类添加到所需的元素,如required然后

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

答案 3 :(得分: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;
    });
});

答案 4 :(得分:0)

我猜测id是形式(输入)元素。如果是这种情况,您可以迭代输入元素,如下所示:

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