Jquery选择带有相邻星号的输入

时间:2013-06-06 06:12:57

标签: javascript jquery

使用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,但似乎无法捕获错误详细信息。我做错了什么?

5 个答案:

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

JS Fiddle demo