2010-07-29 7 views
7

jQuery Validate를 사용하여 문제가 있습니다. 것은 그들의 maxlength 속성이 설정된 몇 개의 텍스트 상자가 있습니다. 필수는 아니지만 공백 또는 공백 일 때 유효성을 검사하지 못합니다.maxlength가 jQuery로 유효성을 검사하지 않는 텍스트 입력 Validate

샘플 HTML : 다음

<input type="textbox" id="tbx1" maxlength="100" value="" />

, $('#tbx1').valid() 반환 false. 대신 true을 돌려 보내야하지 ​​않습니까? 이에 대한 알려진 해결 방법이 있습니까?

오, 그리고 $('#myform').validate({ ignore: '#tbx1' });을 추가하는 것은 자동 ID가있는 ASP.NET 컨트롤을 사용하고 있기 때문에 나에게 적합하지 않습니다. 나는 컨트롤의 클라이언트 ID 또는 Wilco의 IDOverride와 같은 것을 사용할 수 있다는 것을 알고 있지만 이것은 내가 선호하는 것이 아닙니다.

그럼, 누구입니까? 감사!

+0

은 필수 입력란입니다. 유효성 검사 플러그인은 공백을 없애기 때문에 상자가 비어 있거나 공백이 필요한 경우 유효성을 검사하지 않습니다. – JKirchartz

+0

@JKirchartz 그것이 핵심입니다. 현장은 필요하지 않습니다. 버그인지 디자인인지는 모르겠지만이 문제에 대한 해결책을 찾고 싶습니다. – rdumont

+0

이것은 버그 여야합니다. 나는 똑같은 고통을 겪고있다. 필드는 필수는 아니지만 최대 길이를 지정하면 갑자기 jquery 유효성 검사 플러그인이 유효성 검증에 실패했다고 생각합니다. 100 % 버그. 또 다른 이야기의 신호는 그것이 현장에서 오류를 일으키지 않는다는 것입니다. 그래서 무언가가 분명히 거기에서 파열되었습니다. 내 필드에 maxlength 제한을 설정해야하기 때문에 좌절! – Aaron

답변

0

먼저 입력에 "이름"속성이 있고 단순히 예제에 표시되지 않는다고 가정합니다. 그렇지 않으면 문제를 해결할 수 있습니다.

둘째, 명시 적으로 필드를 설정하지 않아도되지만 필수 개체는 최대 길이를 갖지 않으셨습니까? 예를 들어 : 내가 작성했다 몇 가지 복잡한 형태에

var rules = { 
    'txtbx1': { 
    required: false, 
    maxlength: '100' 
    } 
}; 

$('#formId').validate({rules:rules}); 
+0

감사합니다. 필립 이것은 문제를 해결하지 못합니다. 만장일치로 버그로 선언 되었기 때문에 저는이 질문에 대해 사실 잊었습니다. 내 입력에는 이름 컨텍스트가 필요하지 않으므로 name 특성이 없습니다. 또한, 내가 질문에 언급했듯이, 나는 $ ('# formId')를 필요로하지 않을 해결책을 찾고 있었다. validate (...); ' – rdumont

3

이 문제에 란 자신 ...

내 솔루션은 내 자신의 최대 길이 방법을 생성하는 것입니다 내가 할 수있는 거의 정확히 같은 작품 'MAXLEN' 다른 이름의 기본 메소드. 주 유효성 검사 호출 ($ ("# mainform"), 유효성 검사 ({}) 또는 양식 호출시 호출 위에 붙여 넣기 만하면됩니다.

//Custom Max Length Validation 
jQuery.validator.addMethod("maxLen", function (value, element, param) { 
    //console.log('element= ' + $(element).attr('name') + ' param= ' + param) 
    if ($(element).val().length > param) { 
     return false; 
    } else { 
     return true; 
    } 
}, "You have reached the maximum number of characters allowed for this field."); 

당신은 당신과 같이 규칙을 추가 할 수있는 수행하면

는 :

rules: { 
     Message: { 
      required: false, 
      maxLen: 200 
     } 
} 
18

이이 플러그인의 버그 것 같다. 다음 코드를 사용하여 사용자 지정 구현으로이 메서드를 바꾸면이 문제를 해결할 수 있습니다.

$.validator.addMethod("maxlength", function (value, element, len) { 
    return value == "" || value.length <= len; 
}); 
+1

이것은 내 이름을 새 이름으로 설정하는 것보다 나에게 유리했다. 새로운 방법. 입력 필드에 maxlength 속성을 설정했는데 유효성을 검사하지 않았습니다. 한 수준에서 나는 그것에 대해 검증 할 필요성을 느끼지 않는다. 브라우저는 지정된 문자 수 이상을 추가 할 수 없도록 보장하므로 유효성 검사가 실패하는 방식을 실제로 볼 수 없다. 하지만 유효성 검사가 유효하면 유효성 검사에 아무런 해가 없습니다. :) – Adam

+1

감사합니다! 그 버그는 나에게 몇 시간을 들게했다! 그것은 2 년 후에도 여전히 문제가 될 수있는 방법을 넘어선 것입니다. – black666

+0

브라우저의 "최대 길이"검사가 항상 줄 바꿈을 고려하지 않기 때문에 유용합니다. [여기] (http://stackoverflow.com/questions/10030921/chrome-counts-characters-wrong-in-textarea-with-maxlength-attribute)에 설명되어 있습니다. – Peter

관련 문제