簡體   English   中英

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

[英]Form refresh after .submit() event

我正在驗證一份工作正常的表格,但我不知道為什么表格在所有驗證后都沒有提交。

這是驗證碼:

$('#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,只想在驗證后提交。 這段代碼有什么問題嗎?

去掉:

 e.preventDefault();

即使你return true;它也會停止發生默認操作return true;

例如:

  • 阻止提交按鈕提交表單
  • 阻止鏈接跟隨URL

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_"]')來選擇以該前綴開頭的所有輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM