0

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を返すことを妨げません。

フォームを検証に合格させる方法はありますか?

4

1 に答える 1

1

条件付きルールを追加するための正しい構文は次のとおりです。

TimeFrameAmount: { 
    required: { 
        depends : function () { 
            //check conditionality 
        } 
    } 
} 
于 2013-02-19T08:59:01.033 に答える