在.submit()事件之后刷新表单

时间:2013-09-05 05:05:28

标签: javascript jquery forms

我正在验证一份工作正常的表单,但我不知道为什么表单在所有验证后都没有提交。

这是验证码:

$('#coupon_options').submit(function(e){
    e.preventDefault();

    var name = $('input[name="coupon_name"]'), 
        code = $('input[name="coupon_code"]'), 
        value = $('input[name="coupon_value"]'), 
        valid = $('input[name="coupon_valid"]'), 
        status = true;

    if( $.trim(name.val()) == "" ){
        name.css('border-color', '#ff0000');
        status = false;
    } else { name.removeAttr('style'); }

    if( $.trim(code.val()) == "" ){
        code.css('border-color', '#ff0000');
        status = false;
    } else { code.removeAttr('style'); }

    if( $.trim(value.val()) == "" ){
        value.css('border-color', '#ff0000');
        status = false;
    } else { value.removeAttr('style'); }

    if( $.trim(valid.val()) == "" ){
        valid.css('border-color', '#ff0000');
        status = false;
    } else { valid.removeAttr('style'); }

    if( status == true ){ return status; } 
    else { return false; }

});

我知道在提交事件后停止刷新我使用了return false,但我不确定返回true是否在这里工作?

我不想使用Ajax,只想在验证后提交。 这段代码有问题吗?

2 个答案:

答案 0 :(得分:1)

删除:

 e.preventDefault();

即使您return true;也停止默认操作。

例如:

  • 阻止提交按钮提交表单
  • 阻止链接跟踪网址

答案 1 :(得分:1)

e.preventDefault();是问题,但是你应该注意,当你有多个基本上对不同元素执行相同操作的函数时,它永远不是一个好兆头,你可以简化你的代码:

$('#coupon_options').submit(function(e){
    var status = true;
    $('input[name="coupon_name"],input[name="coupon_code"],input[name="coupon_value"],input[name="coupon_valid"]').each(function(){
        if($.trim($(this).val()) == ""){
            $(this).css('border-color', '#ff0000');
            status = false;
        } else {
            $(this).removeAttr('style'); 
        }
    });
    return status;
});

您甚至可以使用$('input[name^="coupon_"]')选择以该前缀开头的所有输入。