2014-01-10 2 views
0

jQuery 유효성 검사 플러그인을 사용하고 와일드 카드 선택기와 함께 errorPlacement 콜백 함수를 사용하려고합니다. 나는 .attr 메서드를 사용하거나 사용하지 않고 와일드 카드 구문의 무수 순열을 시도했으며 (다른 여러 메서드를 시도해 보았습니다.) 제대로 작동하지 않습니다.와일드 카드 선택기가있는 jQuery 유효성 검사 플러그인 errorPlacement

API를 비롯하여 와일드 카드에 대한 몇 개의 스레드를 읽었으나 '요소'사용이 필요한 곳에서는이 기능을 사용하지 않습니다. ... 주위

/*** This will work but only for the specified string ****/ 
if (element.attr("name") == "cdlradio1") 

을 내 머리를 얻이 수없는 것 내가 어떤 도움을 크게 감상 할 수

var $validator = $("#myform").validate({ 
    errorPlacement: function(error, element) { 
if (element.attr("[name^='cdlradio']")) 
    error.insertAfter(element.closest(".bootradlab")); 
else 
    error.insertAfter(element); 
} 

'cdlradio'로 시작하는 모든 입력 요소를 선택합니다.

답변

0

이 적절한 형식이 아닙니다 ...

if (element.attr("[name^='cdlradio']")) ... 

the .attr() method is looking for an attribute as its only argument 왜냐하면. 분명히 [name^='cdlradio']선택자, 이 아니며 속성입니다. 대상 요소가 이고이 이미 element 인수로 선택되어 있으므로 선택 자이 필요하지 않습니다. ^= is the "starts with" selector, 하지 - BTW http://jsfiddle.net/aBrL2/2/

:

당신은 ...

if (element.attr('name').indexOf('cdlradio') >= 0) ... 

"와일드 카드"DEMO

분야 name를 얻고 그것은 당신의 문자열이 포함되어 있는지 확인해야 와일드 카드 그러나 위의 내 솔루션은 문자열이 어딘가에서 발생하는 한 위치와 상관없이 진정한 와일드 카드입니다. >= 연산자를 == 연산자로 변경하면 내 대답을 쉽게 "시작"으로 변환 할 수 있습니다.

는 DEMO "로 시작"http://jsfiddle.net/aBrL2/3/

+1

내가 .attr 난 이미 내가 와일드 카드 문 무슨 생각에서 요소 이름을 참조하는 이후() 메소드를 사용에 문제가있는 것을 알고 있었다. indexOf를 사용하는 것이 확실히 좋은 방법입니다. 설명과 수정을 주셔서 감사합니다. 완벽하게 작동합니다! –