要检查表单,除了隐藏字段外,至少有一个字段已签入

时间:2015-06-09 01:47:23

标签: jquery html forms validation thymeleaf

我正在使用Thymeleaf + HTML 5.在搜索页面中,它有大约40个字段的文本,列表和复选框字段。下面是我的代码,用于检查是否填写了至少一个字段。

$(document).ready(function() {
    searchActionURL = function(obj) { 
        var atleastOneFilled = checkFields($("#searchForm"));
        if(atleastOneFilled)
        {
            $("#searchForm").attr("action", obj);                       
            $("#searchResults").show();
        }
        else
        {
            alert('Please specify atleast one search item');
        }
    }
    searchActionURL();

    function checkFields(form) {
        var checks_radios = form.find(':checkbox, :radio'); 
        var inputs = form.find(':input').not(checks_radios).not('[type="submit"],[type="button"],[type="reset"]'); 
        var checked = checks_radios.filter(':checked');
        var filled = inputs.filter(function(){ 
                return $.trim($(this).val()).length > 0;
            }); 
        if(checked.length + filled.length === 0) {
            return false;
        } 
        return true;
    }
} 

我有一个隐藏的csrf标记字段,它永远不会从表单中清除。那么如何将csrf令牌隐藏字段的异常添加到我的代码中。这样我就可以验证用户是否输入了至少一个搜索条件。我的当前代码总是说有一个字段(指向隐藏的csrf字段),即使我清除了表单中的所有字段。任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我修改了代码以排除隐藏字段。

var inputs = form.find(':input').not(checks_radios).not('[type="submit"],[type="button"],[type="reset"],[type="hidden"]');