私はしばらくこの問題に取り組んできました。
ドロップダウンリストの値がの割合がの場合、値を渡さないためのテキストボックスを検証しようとしています。
これは私のhtmlコードです:falseが返されたときにJQuery検証カスタムメソッドが表示されない
<input type="number" class="inline-form-input" value="" data-action="Increase_budget"
name="increaseBudgetByValue" data-review="Increase_budget_by_value" placeholder="Enter value">
<p>if</p>
<div class="select_p select_narrow" id="automated-rules-increase-budget-if-unit" data-target="increaseBudgetIfUnit">
<div class="select">
<div class="select_in">
<span data-review="Increase_budget_if_unit">$</span>
</div>
</div>
<div id="ifUnitDDL" class="select_drop">
<ul>
<li value="$">$</li>
<li value="%">%</li>
</ul>
</div>
</div>
それが変化し、それが正常に動作したときに、私は入力を検証するためのカスタムメソッドを作成しました:
jQuery.validator.addMethod("lowerThan100Percent", function (value, element, params) {
debugger;
return !(parseInt(value) > 100 && ($("span[data-review='Increase_budget_if_unit']").text() === "%" || params.ifUnit === "%"));
}, "*Cannot pass the 100%");
ユーザが他のリストを選択したとき、私はその関数を呼び出します値:
$("#ifUnitDDL li")
.on("click",
function (e) {
debugger;
var ifUnit = $(this).text();
if (ifUnit === "%") {
var element = $("input[name='increaseBudgetIfValue']");
var value = element.val();
var params = { ifUnit: ifUnit };
jQuery.validator.methods.lowerThan100Percent.call(value, value, element[0], params);
}
});
関数パスを期待通りに呼び出すときに送信するすべての引数と戻り値も "False"で、iエラーメッセージを表示すると思われますが、それは何らかの理由ではありません。 私は何が間違っていますか?
回答していただきありがとうございます。私はあなたの提案したことを実行していますが、今は別の問題があります。 "$("#increaseBudgetByValue ")。valid()"を使用し、入力が必要なので、 "入力が必要です"と警告するスパンテキストを変更する必要があります。 –
コードを修正しましたか?私は私のフィドルで "入力が必要です"というエラーは決して見られません。あるいは、私は正しいステップを逃していますか? – Dhananjay
可視スパン要素、すなわち 'span [data-review = 'Increase_budget_if_unit']'を使用する代わりに、隠しスパン要素を追加して 'ifUnit'の値を保持することができます。 'lowerThan100Percent'は隠された範囲の値になります – Dhananjay