0

スクリーンショット

上記のフィールドがあります。少なくとも1つは0より大きい値を入力するように要求したいのですが、テーブルとシートを含めることもできます。

私のHTML:

   <div class="form-row reserve">
    <input type="text" name="tables" id="tables" value="0"/>
        <label for="tables">corporate tables (10 seats) @ $1,950 each and/or</label>
   </div>
   <div class="form-row reserve">
    <input type="text" name="individual" id="individual" value="0"/>
        <label for="individual">individual seats @ $225 each</label>
   </div>

私はこれを試しましたが、機能していないようです:

tables: {
    required: function(element){
        return $("#individual").val() == 0;
    }
},

individual: {
    required: function(element){
        return $("#tables").val() == 0;
    }
}

どんな助けでもいただければ幸いです。

4

1 に答える 1

0

そのような内部で関数を使用することはできませんrule。 通常はまたはrequired:のみを受け入れます。ただし、...内の関数を指定するために使用することもできます。truefalsedependstrue/false rule

rules: {
    tables: {
        required: {
            depends:  function(element) {
                return $("#individual").val() === 0;
            }
        }
    }
}

ただし、上記を使用すると、両方のフィールドが空になることはないため、フォームは常に検証に合格します(「0」が含まれます)。したがって、requiredルールは常に満たされます。参照: http: //jsfiddle.net/vcnt9/

02つのフィールドからデフォルト値のを削除して修正することはできません。これは、depends関数が満たされることはなく、フィールドは単にオプションのままであるためです。参照: http: //jsfiddle.net/vcnt9/1/

または、またはのいずれかであるルールでのみ使用が許可されているためdepends、ルールに適用してこれを修正することはできません。min: 1truefalse


最善の解決策は、これら2つのフィールドに独自のルールを作成するために使用することです。addMethod<=負の数を除外するには、「以下」の演算子()を使用します。

$.validator.addMethod("myMethod", function (value, element) {
    if (($("#individual").val() <= 0) && ($("#tables").val() <= 0)) {
        return false;
    } else {
        return true;
    }
}, "Please enter at least one field");

作業デモ: http: //jsfiddle.net/v4UGM/

于 2013-01-24T21:55:26.453 に答える