当非必填字段为空时,jquery验证会停止提交页面

时间:2010-05-13 19:06:30

标签: asp.net jquery validation

我正在使用jquery来验证asp.net表单(母版页中的内容)。所需的字段验证都很有效,但我有一个所需的字段,但如果它有文本则需要采用正确的格式。 Jquery验证错误的文本就好了,但是当文本为空时它会停止提交表单(尽管没有错误消息)。任何人都知道为什么会发生这种情况或该怎么办?

 // Add validation rule for email
            if ($("input[id$='TextBoxEmail']").length) {
                $("input[id$='TextBoxEmail']").rules('add', {
                    required: false,
                    email: true,
                    messages: {
                        email: 'Please enter a valid email.'
                    }
                }); 
            } 

2 个答案:

答案 0 :(得分:0)

我刚刚设置了类似的测试,无法复制该问题(请参阅下面的代码):

    <script type="text/javascript">
    $(document).ready(function () {
        $("#test").validate();

        if ($("input[id$='txtText']").length) {
            $("input[id$='txtText']").rules('add', {
                required: false,
                email: true,
                messages: {
                    email: 'Please enter a valid email.'
                }
            });
        }
    });
</script>

<form id="test">
    <input type="text" id="txtText" />
    <input type="submit" />
</form>

我正在使用jQuery 1.5.1和最新的jquery.validate.min.js

我只能建议您使jQuery选择器更具体,因为id$='TextBoxEmail'表示以'TextBoxEmail'结尾。如果您的字段名称冲突,这可能会出现问题吗?

答案 1 :(得分:0)

我们发现解决方法是根据我们的标准手动删除验证。

// Add validation rule for first name (default Person type is Individual so the validation is needed as default)
            if ($("input[id$='TextBoxFirstName']").length) {
                $("input[id$='TextBoxFirstName']").rules('add', {
                    required: true,
                    messages: {
                        required: 'First Name is required for individuals.'
                    }
                });
            }   

// Add event for checking if first name validation is needed
            $('select[id$=DropDownListPersonType]').change(function () {
                if ($('select[id$=DropDownListPersonType] option:selected').text() == 'Individual') {
                    // Add validation rule
                    $("input[id$='TextBoxFirstName']").rules('add', {
                        required: true,
                        messages: {
                            email: 'First Name is required for individuals.'
                        }
                    });
                }
                else {
                    // remove rule
                    $("input[id$='TextBoxFirstName']").rules("remove");
                }
            });