我有一个名为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" />
答案 0 :(得分:1)
一种方法是使用掩码强制用户输入有效的货币编号。我一直在使用maskmoney,效果很好。
https://github.com/plentz/jquery-maskmoney
if($('#answerYesNo_1 option:selected').val() == 'yes'){
$("#answerYesNoText_1").maskMoney();
}
答案 1 :(得分:0)
尝试这一点来检查输入是否是一个数字,而不是你曾经去过的令人难以置信的过于复杂的正则表达式:
if (!isNaN(parseFloat($('#answerYesNoText_1').val()))) {
return true;
}
答案 2 :(得分:0)
我认为最好将required
和有效的货币规则分开,例如:
rules: {
answerYesNoText_1: {
required: function(){
if ($('#answerYesNo_1').val() == 'yes'){
return true;
}
return false;
}
}
}
并在正则表达式正确的情况下使用$.validator.addMethod
为货币值检查添加验证规则。
答案 3 :(得分:0)
我要做的是向select元素添加一个onchange事件处理程序,当选择“yes”时,它将向文本输入字段添加验证类,并在不选择时删除该类。您可能每次都必须重新初始化表单验证对象,但至少验证似乎会以这种方式“链接”。