jQuery-允许表单提交并覆盖preventDefault()?

时间:2018-07-17 15:50:44

标签: javascript jquery

我有一项功能可以进行测试,并确保至少填写一个表单字段:

function checkFields(form) {
    var checks_radios = form.find(':checkbox, :radio'),
            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;

}

在提交表单时会调用它:

$(function(){
    $('.checkThisForm').on('submit',function(e){
            e.preventDefault();
            var oneFilled = checkFields($(this));
            if (!(oneFilled)) {
                    alert('You must fill in at least one field');
            } else {
                    /* ??? */
            }
    });

});

如果用户提供了至少一个要在表单中搜索的元素,我的else {}中允许提交表单的内容是什么?

2 个答案:

答案 0 :(得分:2)

return进行表单操作将指示继续或停止提交

$('.checkThisForm').on('submit',function(e){
    var oneFilled = checkFields($(this));
    if (!(oneFilled)) {
        alert('You must fill in at least one field');
        return false;
    } 
    return true;
});

答案 1 :(得分:0)

您需要遵循以下信息。首先,您需要触发点击事件并提交

$(function(){
$('.checkThisForm').on('click',function(e){
        e.preventDefault();
        var oneFilled = checkFields($(this));
        if (!(oneFilled)) {
                alert('You must fill in at least one field');
        } else {
                this.submit();
        }
});