jQuery验证即使失败也会提交非ajax

jQuery验证即使失败也会提交非ajax,jquery,jquery-validate,Jquery,Jquery Validate,我使用的是jQueryValidate,它实际上是有效的,这意味着它会显示错误并要求用户修复错误,但如果用户单击submit,它就会提交,没有问题。有人能帮我吗?代码示例如下: <form class="col-lg-2 well" id="filterForm"> <p><fmt:message key="name1"/></p> <input id="name" type="text" placeholder="name"

我使用的是jQueryValidate,它实际上是有效的,这意味着它会显示错误并要求用户修复错误,但如果用户单击submit,它就会提交,没有问题。有人能帮我吗?代码示例如下:

<form class="col-lg-2 well" id="filterForm">
    <p><fmt:message key="name1"/></p>
    <input id="name" type="text" placeholder="name" value="${searchBean.name}" name="name" class="input-large text-primary">

    <p><fmt:message key="minimum.price"/></p><input id="minPrice" type="text" placeholder="minPrice" value="${searchBean.minPrice}" name="minPrice" class="input-large text-primary">

    <p><fmt:message key="maximum.price"/></p>
    <input id="maxPrice" type="text" placeholder="maxPrice" value="${searchBean.maxPrice}" name="maxPrice" class="input-large text-primary">

    <p><fmt:message key="manufacturer1"/></p>
    <input id="manufacturer" type="text" placeholder="manufacturer" value="${searchBean.manufacturer}" name="manufacturer" class="input-large text-primary">

    <p>
        <fmt:message key="categories"/>
        <c:forEach var="cat" items="${requestScope.categories}">
            <p><c:out value="${cat.second}"/></p>
            <input type="checkbox" name="category" value="<c:out value="${cat.first}"/>"/>
            </p>
        </c:forEach>

        <p><fmt:message key="sorts"/></p>
        <select name="sort">
            <option value="name"><fmt:message key="name"/></option>
            <option value="manufacturer"><fmt:message key="manufacturer"/></option>
            <option value="price"><fmt:message key="price"/></option>
        </select>

        <select name="sortType">
            <option value="ASC"><fmt:message key="asc"/></option>
            <option value="DESC"><fmt:message key="desc"/></option>
        </select>
    </p>

    <p><fmt:message key="pagesize"/>
        <input type="text" name="pageSize" id="pageSize" placeholder="pageSize" value="${searchBean.page.pageSize}">
    </p>

    <p><input type="submit" value="Filter" class="btn btn-primary"></p>
</form>

下面是验证函数:

$('#filterForm').validate(
    {
        rules: {
            name: {
                maxLength: 50,
                required: false
            },
            minPrice: {
                required: validatePrices() == true,
                min: 0,
                digits: true
            },
            maxPrice: {
                required: validatePrices() == true,
                min: 1,
                digits: true
            },
            manufacturer: {
                maxLength: 50,
                required: false
            },
            pageSize: {
                required: true,
                min: 0,
                number: true
            }
        },
        messages: {
            name: {
                maxLength:<fmt:message key="length.should.be.50.or.less"/>
            },
            minPrice: {
                min:<fmt:message key="min.length.is.1"/>,
                required:<fmt:message key="min.price.should.be.less.than.max"/>
            },
            manufacturer: {
                maxLength:<fmt:message key="length.should.be.50.or.less"/>
            },
            maxPrice: {
                min:<fmt:message key="min.length.is.1"/>,
                required: validatePrices() == true
            },
            pageSize: {
                min:<fmt:message key="min.length.is.1"/>
            }
        }
    }
)
});
$(“#过滤器执行”)。验证(
{
规则:{
姓名:{
最大长度:50,
必填项:false
},
价格:{
必需:validatePrices()==true,
分:0,,
数字:真
},
最高价格:{
必需:validatePrices()==true,
民:1,,
数字:真
},
制造商:{
最大长度:50,
必填项:false
},
页面大小:{
要求:正确,
分:0,,
数字:对
}
},
信息:{
姓名:{
最大长度:
},
价格:{
最小:,
必修的:
},
制造商:{
最大长度:
},
最高价格:{
最小:,
必需:validatePrices()==true
},
页面大小:{
最小值:
}
}
}
)
});

Thx以获取帮助。

只要存在验证错误,jQuery验证插件就会阻止正常表单提交。但是,您的代码存在一些可能会干扰插件正常运行的潜在问题

1)您的代码:

maxLength: 50,
required: validatePrices() == true
required:<fmt:message key="min.price.should.be.less.than.max"/>
没有称为
maxLength
的方法

2)您的代码:

maxLength: 50,
required: validatePrices() == true
required:<fmt:message key="min.price.should.be.less.than.max"/>
这需要一个布尔值或一个函数。看起来应该更像这样

required: function() {
    return validatePrices() == true;
}
required:  "min price should be less than max" 
3)您的代码:

maxLength: 50,
required: validatePrices() == true
required:<fmt:message key="min.price.should.be.less.than.max"/>

在稍微清理了一下格式之后,代码中似乎出现了一些错误。(例如,规则对象中的额外

标记、额外
}
等)。我建议在尝试进行故障排除之前,先通过一些在线代码验证程序运行代码,以确保代码是干净的。