1

というドロップダウンがありanswerYesNo_1ます。ユーザーが「はい」オプションを選択した場合、ユーザーに有効な金額をanswerYesNoText_1フィールドに入力させたいと思います。これら 2 つのルールを連鎖させるにはどうすればよいですか? ここで少し困っています。以下のコードは、オプション yes が選択されたときに検証します。ただし、「asdad」などの値を入力すると合格します。はい、必要です、はい、テストを行います。

rules: {
            answerYesNoText_1: { required : { depends:function(){ if ($('#answerYesNo_1').val() == 'yes') {  
                if ( /^\$?[0-9][0-9\,]*(\.\d{1,2})?$|^\$?[\.]([\d][\d]?)$/.test($('#answerYesNoText_1').val()) != true ) {          
                    return true;}  }  } 
                                            }
                                }
    },  

ここに私のフィールドがあります:

 <select name="answerYesNo_1" id="answerYesNo_1" style="width:60px; font-size:11px;">
     <option value=""></option>
     <option value="yes">Yes</option>
     <option value="no">No</option>
 </select>
 <input type="text" name="answerYesNoText_1" id="answerYesNoText_1" class="answers" value="" maxlength="60" /> 
4

4 に答える 4

1

1 つの方法は、マスクを使用してユーザーに有効な金額を入力させることです。私はこれに maskmoney を使用しており、非常にうまく機能しています。

https://github.com/plentz/jquery-maskmoney

if($('#answerYesNo_1 option:selected').val() == 'yes'){
   $("#answerYesNoText_1").maskMoney();
}
于 2012-05-15T14:49:05.623 に答える
0

私が行うことは、onchangeイベントハンドラーをselect要素に追加して、「yes」が選択されている場合は検証クラスをテキスト入力フィールドに追加し、選択されていない場合はそのクラスを削除することです。毎回フォーム検証オブジェクトを再初期化する必要があるかもしれませんが、少なくとも検証はこのように「連鎖」しているように見えます。

于 2012-05-16T03:15:16.167 に答える
0

これを試して、入力が、あなたがそこに行っていた気が遠くなるほど複雑な正規表現ではなく、数値であるかどうかを確認してください。

if (!isNaN(parseFloat($('#answerYesNoText_1').val()))) {
    return true;
}
于 2012-05-15T14:28:36.007 に答える
0

requiredと有効な通貨ルールを次のように分けた方がよいと思います。

rules: {
    answerYesNoText_1: {
        required: function(){
            if ($('#answerYesNo_1').val() == 'yes'){
                return true;
            }
            return false;
        }
    }
}

$.validator.addMethod正しい正規表現を使用して、金額チェックの検証ルールを追加します。

于 2012-05-16T03:02:15.203 に答える