使用jquery,我试图选择那些旁边有星号的inputs
。
HTML
<form name="checkout">
<table width="100%" border="0">
<tr>
<td>First Name</td>
<td><input type="text" name="FirstName" value="" />*</td>
</tr>
<tr>
<td>Last Name</td>
<td><input type="text" name="LastName" value="" /></td>
</tr>
</table>
</form>
Jquery的
var elems = $("form[name='checkout'] :input").filter(function(index) {
var str = $(this).parents('td').html()
return (str.indexOf("*")!=-1)
}).length;
elems
的结果应为1,但它不起作用,即表单提交尽管处理程序中返回false,但似乎无法捕获错误详细信息。我做错了什么?
答案 0 :(得分:3)
var elems = $("td:contains('*') input");
这是您需要的输入元素的选择器。 在这种情况下elems.length会给你1个
答案 1 :(得分:0)
缺少onReady()。 使用这个,
$(function(){
var elems = $("form[name='checkout'] :input").filter(function(index) {
var str = $(this).parents('td').html()
return (str.indexOf("*")!=-1)
}).length;
console.log(elems);
});
应该这样做。干杯:)。
答案 2 :(得分:0)
我建议你使用CSS:在伪元素之后
<style>
.mandatory:after{
content:"*";
}
</style>
<span class="mandatroy">
<input type="text" name="FirstName" value="">
</span>
<script>
$("form[name='checkout'] .mandatory > :input")
</script>
答案 3 :(得分:0)
如果您在输入后面添加了一个类,将会更容易:
<td><input type="text" name="FirstName" class="required" />*</td>
然后你可以按他们的班级选择他们并做任何你想做的事。
$("input.required").length();
答案 4 :(得分:0)
明确要求:
$('input').filter(function () {
return (this.nextSibling && this.nextSibling.nodeValue.indexOf('*') > -1) || (this.previousSibling && this.previousSibling.nodeValue.indexOf('*') > -1);
}).css('border-color','#f00');