jQuery検証の条件付きルールに問題があります。
要素の条件付きルールを次のように指定します。
var validatorSettings = $("form").data('validator').settings;
validatorSettings.rules = $.extend({}, validatorSettings.rules, {
TimeFrameAmount: {
number: function() { return $("select[name='TimeFrameUnits']").val() === "true"; },
required: function() { return $("select[name='TimeFrameUnits']").val() === "true" } ;
}
});
問題は、フォームを送信すると$("form").valid()
0が返されることです。
トレースダウンして$("input[name='TimeFrameAmount']").valid()
、フォーム内で0を返す唯一の要素であり、フォームの検証に失敗する要素であることを確認しました。
さらに、これを追跡すると、$("input[name='TimeFrameAmount']").valid()
常に0が返され、条件付きルール関数が両方ともfalseを返した場合でも、フォームの検証が失敗します。
$("input[name='TimeFrameAmount']").valid()
条件付きルール関数にブレークポイントを設定してこれを確認し、Firefoxコンソールからへの呼び出しをトリガーしました。
私の条件付きルールはfalseを返し、$("input[name='TimeFrameAmount']").valid()
それでも0を返し、フォームは検証に失敗します。
注意すべき点の1つはerrorPlacement
、条件付きルールがfalseを返したときにコールバックが起動されないことです。これは、検証なし=エラーなしであるため意味があります。
実際、フォームを検証するとき、入力には「有効な」クラスさえあります(そしてその後もそれがあります)
ただし、これらのいずれも、valid()
メソッドがその0を返すことを妨げません。
フォームを検証に合格させる方法はありますか?