我有以下代码
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).....
答案 0 :(得分:2)
尝试使用jQuery选择器“starts with”:
$('*[id^="contact_"]').each(function () {
if (this.value == '') {
$(this).closest('div').append('<p class="validate">some text</p>');
error = true;
})
};
我使用*
来定位所有元素,您可以将其替换为div
,p
或更符合您元素的元素。
答案 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;
})
};