2016-08-05 2 views
0

치수 필드가있는 양식이 있으며 다음과 같이 양식의 유효성을 검사합니다.동적으로 다른 요소에 대한 Jquery 유효성 검사 사용자 지정 메시지

$("#myForm").validate({ 
     rules:{ 
      "length" : { 
       required: true, 
       number: true, 
       range: [0, 101.1] 
      }, 
      "width" : { 
       required: true, 
       number: true, 
       range: [0, 101.1] 
      }, 
      "weight" : { 
       required: true, 
       number: true, 
       range: [0, 99.999] 
      } 
     }, 
     messages : { 
      "length" : { 
       required: globalCtx.requiredMsg, 
       range: $("#selectedUnit").val() =="true" ? globalCtx.invalidSizeMetric : globalCtx.invalidSizeImperial 
      }, 
      "width" : { 
       required: globalCtx.requiredMsg, 
       range: $("#selectedUnit").val() =="true" ? globalCtx.invalidSizeMetric : globalCtx.invalidSizeImperial 
      }, 
      "weight" : { 
       required: globalCtx.requiredMsg, 
       range: $("#selectedUnit").val() =="true" ? globalCtx.invalidWeightMetric : globalCtx.invalidWeightImperial 
      } 
     } 
    }); 

단위 내가 제국의 메시지를 반영하기 위해 오류 메시지를 변경하려면 아래 함수를 호출 변경 될 때마다.

function changeMetric(){ 
if($("#selectedUnit").val() =="true"){ 
     jQuery.extend(jQuery.validator.messages, { 
      "weight":{ 
       range: globalCtx.invalidWeightMetric 
      }, 
      "length" : { 
        range: globalCtx.invalidSizeMetric 
       }, 
      "width" : { 
        range: globalCtx.invalidSizeMetric 
       } 
     }); 
    }else{ 
     jQuery.extend(jQuery.validator.messages, { 
      "weight":{ 
       range: globalCtx.invalidWeightImperial 
      }, 
      "length" : { 
       range: globalCtx.invalidSizeImperial 
      }, 
      "width" : { 
       range: globalCtx.invalidSizeImperial 
      } 
     }); 
    } 
} 

하지만이 기능은 오류 메시지를 업데이트하지 않습니다.

답변

0

당신은 함수 내에서 변수 return해야하거나 동적으로 평가되지 않습니다 ...

messages: { 
    length: { 
     required: function(element) { 
      return globalCtx.requiredMsg; 
     }, 
     range: function(element) { 
      return $("#selectedUnit").val() =="true" ? globalCtx.invalidSizeMetric : globalCtx.invalidSizeImperial; 
     } 
    }, .... 
관련 문제