2017-10-23 11 views
0

私は、このHTMLがある場合:jQueryの検証()、異なる値

<div class="form-group radioInput"> 
    <label class="radio-inline"> 
    <input checked="checked" name="AcknowledgeLSA" type="radio" value="False"> No 
    </label> 
    <label class="radio-inline"> 
    <inputname="AcknowledgeLSA" type="radio" value="True"> Yes 
    </label> 
</div> 

と、(明らかに動作しません)この擬似JS:

myForm.validate({ 
    rules: { 
     AcknowledgeLSA:checked : {required: value="True"} 
    } 
});   

を...ラジオボタンの値が「真」であることに基づいて、どのように検証することができますか?

JSをHTMLでなく変更する必要があります。フォームはTrue値のラジオボタンが選択されている場合に有効です。他のFalseラジオボタンがチェックされている場合は、フォームが有効ではありません。

答えて

1

私はあなたがここにdependsを使用する必要があると思う:

myForm.validate({ 
    rules: { 
     AcknowledgeLSA: { 
      required: true, 
      depends: function() { 
         var rbtn = $("input[name='AcknowledgeLSA']:checked"); 
         return typeof rbtn !== 'undefined' && rbtn.val() == "True"; 
       } 
     } 
    } 
}); 

EDIT:あなたはこのようなカスタムルールを作成することができます

jQuery.validator.addMethod("hasValue", function(value, element, param) { 
    return value == param; 
}, 'Invalid!'); 

myForm.validate({ 
    rules: { 
     AcknowledgeLSA: { 
      hasValue: 'True' 
     } 
}; 
+0

ええ私は、それが "require:true"を必要とするときに、 "Uncaught TypeError:undefinedの 'call'プロパティを読み取れません。要素AcknowledgeLSAをチェックする際に例外が発生しました。「depends」メソッドをチェックしてください。 – JacobIRR

+0

そのようなラジオボタンの値をチェックすることはできません。答えを更新しました。それが今働くかどうか見てください。 –

+0

私はこれがそうすると言っていることをしていると思います(依存条件を満たすときに必要なフィールドを作っています)が、ここで問題となるのは、値がTrueの場合に常に条件を満たすということです。 'valueMustBe'のような' required'の代わりが存在するのではないかと思いますので、実際の値が何であるかを確認し、そのチェックをバリデーションのソースとして使用するのでしょうか? – JacobIRR

0
myForm.validate({ 
rules: 
    AcknowledgeLSA : { 
     required: true, 
     depends: function() { return $('[name="AcknowledgeLSA"]').is(':checked').val() === "True";} 
    } 
} 
}); 

https://jqueryvalidation.org/validate/#rules

+0

イム値の話DOMノードの属性は、ただ必要とされるラジオボタンではなく、文字列 '' True ''に設定されています。 – JacobIRR

関連する問題