jQuery和Validation插件

时间:2012-05-15 14:26:16

标签: jquery jquery-validate

我有一个名为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 个答案:

答案 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”时,它将向文本输入字段添加验证类,并在不选择时删除该类。您可能每次都必须重新初始化表单验证对象,但至少验证似乎会以这种方式“链接”。

相关问题