2011-02-12 77 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>");