2012-10-15 2 views
2

JQuery 유효성 검사 및 사용자 지정 메서드에 이상한 버그가 있습니다. 어떤 이유로 필드를 변경할 때마다 validate 메서드가 3-4 회 발생합니다. 왠지 반복되고있어, 왜 그런지 모르겠다. 유효성 검사기가 작동합니다. 유일한 문제는 datepicker와 함께 작동하지 않는다는 것입니다. 입력에서 값을 변경하려면 datepicker에서 두 번 클릭해야합니다. jquery validate가 datepicker 입력 등을 하이재킹하는 것 같습니다. 나는이 시점에서 우둔한 어떤 아이디어를 즐겁게합니다.JQuery 이상한 사용자 정의 메서드 유효성 검사 버그

사용자 지정 방법 :

$(document).ready(function() { 

    $.validator.addMethod("laterDate", function(value, element) { 
     var id = "#" + element.id; 
     var id_number = element.value.charAt(element.length - 1); 
      alert(id_number); 
     if(id_number == "1"){ 
      alert("in if") 
      var id_value = $(id).fieldDate(); 
      var today = new Date(); 
       alert(id_value > today); 
       return id_value > today; 
     } 
     else{ 
     alert("in else") 
     var prev_id_number = String(parseInt(id_number) - 1); 
     var prev_id = "#end_date_" + prev_id_number; 
     var prev_id_value = $(prev_id).fieldDate(); 
     var id_value = $(id).fieldDate(); 
     return id_value > prev_id_value; 
     } 

    }, $.format("Enter a later date")); 
}); 

유효성 검사기 코드는 다음과 같습니다

$(document).ready(function() { 
    $("#rate_new_new").validate({ 
     debug: true, 

rules: { 
       "rates[start_date_1]": {dateITA: true, maxlength: 50}, 
       "rates[end_date_1]": {dateITA: true, maxlength: 50, laterDate: true}, 
       "rates[price_1]": {testPrice: true} 
       }, 
    messages: { 

     "rates[start_date_1]": { 
      dateITA: "Please enter a valid date", 
      maxlength: "The name must be less than 50 characters" 

     } 
    },  

    submitHandler: function(form) { 

       $(form).ajaxSubmit({ 

         success: function(){ 
          $('#lefttabs li:eq(4) a').tab('show'); 
              } 
            }); 


            } 
}); 
}); 

답변

3

위치 : .toString()), 아래에 고정 코드 JqueryUIDatePicker를 사용하고 있습니까?

보다, 이것을 시도 :.

$('#yourid').datepicker({ 
    onSelect: function(dateText, inst) { 
     $(this).blur(); 
    } 
}); 
0

코드는 한 /가 (난 당신이 의미 생각 라인 엔딩과 String 문 누락처럼 거기에 몇 가지 오류 당신이

$(document).ready(function() { 

    $.validator.addMethod("laterDate", function(value, element) { 
     var id = "#" + element.id; 
     var id_number = element.value.charAt(element.length - 1); 
     alert(id_number); 
     if (id_number == "1") { 
      alert("in if"); 
      var id_value = $(id).fieldDate(); 
      var today = new Date(); 
      alert(id_value > today); 
      return id_value > today; 
     } 
     else { 
      alert("in else"); 
      var prev_id_number = (parseInt(id_number) - 1).toString(); 
      var prev_id = "#end_date_" + prev_id_number; 
      var prev_id_value = $(prev_id).fieldDate(); 
      var id_value = $(id).fieldDate(); 
      return id_value > prev_id_value; 
     } 

    }, $.format("Enter a later date")); 
});​ 
+0

:(아무것도 변경하지 않은이 코드는 여전히 각 변경에 3-4 시간을 통해 루프 –

+0

아 글쎄, 그것은 시도 가치가 있었다 당신이 있습니까.. 데모? –

+0

도움이 되었습니까?하지만 위의 게시물과 함께 변경했는데 예상대로 작동합니다. –

관련 문제