1

我有一个下拉菜单answerYesNo_1。如果用户选择“是”选项,我想强制用户在answerYesNoText_1字段中输入有效的货币值。我如何链接这两个规则?我在这里有点麻烦。下面的代码在选择是选项时进行验证。但是,我可以输入像“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

一种方法是使用掩码强制用户输入有效的货币数字。我一直在使用 maskmoney 并且效果很好。

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

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

我要做的是在选择“ Yes”时将OnChange事件处理程序添加到Select元素中,该元素将添加验证类,并在没有时删除该类。您可能每次都必须重新初始化表单验证对象,但至少验证会以这种方式“链接”起来。

于 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 回答