我有这个HTML:
<fieldset style="display: block;" title="Producto" class="fstep" id="product-create-step-2">
<section>
<div class="p_name">
<input type="text" maxlength="50" required="required" name="product[name]" id="product_name">
</div>
<div class="p_description">
<textarea required="required" name="product[description]" id="product_description"></textarea>
</div>
<div class="p_age">
<input type="text" value="0" name="product[age_limit]" id="product_age_limit">
</div>
</section>
</fieldset>
我正在尝试使用required="required"
显示空值的每个元素的警报,所以我这样做了:
$('#product-create-step-2 > input[required="required"]').each(function() {
if (!$.trim(this.value).length) {
alert($(this).prev('label').text() + ' can't be empty!!!');
valid = false;
}
});
如果我将#product_name
或#product_description
留空,它永远不会显示警报而我找不到我想念的任何建议?
答案 0 :(得分:5)
>
用于选择直接后代。
你想要这个:
$('#product-create-step-2 input[required="required"]')
无论嵌套有多深,都会在#product-create-step-2
内找到所有匹配的输入。
此外,这将导致语法错误:
' can't be empty!!!'
您需要转义单引号或切换报价:
' can\'t be empty!!!'
或(我的偏好):
"can't be empty"
答案 1 :(得分:1)
您的元素不是#product-create-step-2
的直接子元素,因此您不应包含>
。只需在两个选择器之间留出空格,您就可以在#product-create-step-2
内的任何位置获得所有元素。
$('#product-create-step-2 input[required="required"]')
答案 2 :(得分:0)
第一个选择器下方有无输入。
尝试将选择器更改为:
$('#product-create-step-2 > section > div > input[required="required"]')
甚至只是
$('#product-create-step-2 input[required="required"]')
答案 3 :(得分:0)
不,更仔细地查看DOM,查询应该是:
$('#product-create-step-2 input[required="required"]').each ...
或:
$('#product-create-step-2 > section > div > input[required="required"]').each ...
因为>
选择了父母的直接子元素。