2011-02-12 76 views
4

我遇到了表单字段上布尔型required属性的轻微验证问题。如何在jQuery中使用'required'属性跨浏览器检测输入字段?

我标记了我的领域,例如:

<label for="email">Email Address:</label> 
<input value="" type="email" name="email" id="email" required /> 

但是试图找到使用jQuery的所有必填字段,然后将其添加到一个数组,由于检测问题似乎有问题。

以下仅适用于Firefox(Gecko)$(':input[required=""]'),但在Webkit(Safari,Chrome)中不会返回任何内容。

另一方面,如果我运行$(':input[required]')$(':input[required="true"]'),Webkit会返回所有必填字段,但是当它通过Gecko运行时,它不会返回所需的字段。

我在这里做错了什么?最后我检查输入属性只是requiredrequired="required"也不required="true"

有没有更好的方式来检测所有使用javascript/jQuery的必填字段?

+0

需要的是不是一个有效的属性。任何你不使用`class =“所需的东西的原因是什么?然后用jQuery抓取元素将是微不足道的:``jQuery('input.required')` – 2011-02-12 03:42:48

+1

必需是一个有效的HTML5属性 – SpliFF 2011-02-12 04:03:27

回答

4

这可能是一个糟糕的解决方法,但你有没有尝试过多选择器?

$(':input[required=""],:input[required]') 
+0

是的,这就是我目前正在做的工作,我只是认为会有更好的这样做的方式:)谢谢。 – Jannis 2011-02-12 03:25:31

3

你在这里。这将输出一个包含所有必填字段的数组。

<input value="" type="email" name="email" id="email" required/> 
<input value="" type="email" name="email1" id="email1" required/> 
<input value="" type="email" name="email2" id="email2"/> 

<script type="text/javascript"> 
var x = $('input[required]').get(); 
console.log(x); // x will contain an array of required inputs [input#email, input#email1] 
</script> 
0

自举3,你可以这样做:

$('input[required]') 
    .closest(".form-group") 
    .children("label") 
    .append(" <i class='fa fa-asterisk'></i>");