2016-08-05 3 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; 
     } 
    }, .... 
関連する問題