2011-02-12 3 views
4

양식 필드의 부울 required 속성에 약간의 유효성 검사 문제가 있습니다.jQuery에서 입력 필드를 '필수'속성으로 교차 브라우저에서 검색 할 수 있습니까?

<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를 통해 실행하면 필수 필드가 반환되지 않습니다.

내가 뭘 잘못하고 있니? 마지막으로 입력 속성이 required이고 required="required"도 아니고 required="true"도 아닌지 확인했습니다.

javascript/jQuery를 사용하여 필요한 모든 필드를 감지하는 더 좋은 방법이 있습니까?

+0

필수 유효한 속성이 아닙니다. 'class = "와 같은 것을 사용하지 않는 이유는 대신''''이 필요합니까? 'jQuery ('input.required')' –

+1

은 유효한 HTML5 속성을 의미합니다. – SpliFF

답변

4

좋지 않은 해결 방법 일 수 있지만 여러 선택기를 사용해 보셨습니까?

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

현재 내가 현재하고있는 일은 바로 그게 더 좋을 것이라고 생각했습니다. 이것에 대한 방법 :) 감사합니다. – Jannis

+0

@ Jannis : 입력만으로도 성능 저하가 발생합니다. dom의 모든 요소를 ​​검색하여 입력 필드를 찾습니다. – Hussein

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

감사합니다. 나는 이것이 작동하는 것으로 확인할 수 있습니다. 그러나 이상적으로는'input' 셀렉터를 계속 사용하여'input'뿐만 아니라'textarea'도 감지하도록하고 싶습니다. 이 작업을 수행 할 수도 있고, 텍스트 영역을 두 번째 선택자'$ ('input [required], textarea [required]')로 확인해야할까요? get();'? – Jannis

+0

@jannis 네, 물론 쉼표로 구분할 수 있습니다. 당신이 포함 할 수있는 또 다른 방법은 포함시키고 자하는 모든 필드에 대해 공통 클래스를 할당하고 클래스 이름으로 요소를 참조하는 것입니다. ex : $ ('. class [required]') – Hussein

+0

업데이트를 주셔서 감사합니다. 개인적으로는 필드가 있지만, 클래스 이름이 그러한 갈고리로 사용되는 것을 선호하지 않습니다.하지만 그건 저뿐입니다. 다시 한번 감사드립니다. – Jannis

0

부트 스트랩 3, 당신은 할 수 있습니다 :

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