2011-02-24 107 views
0

目前我在頁面上有一組字段。點擊按鈕後,如果這些字段的驗證通過,將出現一個對話框模式框。該表格有幾個其他字段必須填寫,然後才能提交表格。jquery在提交表單之前在對話框中驗證表單

如何證明第一組字段是有效的,然後在提交表單的同時打開對話框,直到對話框字段也被驗證爲止?

$("#check-button") 
    .button() 
    .click(function(e) { 
     // Section 1 
     $(':text, select, textarea').each(function() { 
      if ($(this).val().length == 0) { 
        $(this).css('border', '2px solid red'); 
        e.preventDefault(); 
      } 
     }); 

     //Section 2 
     //e.preventDefault(); 
     //$('#my_form').submit(); 
     //$("#dialog-form").dialog("open"); 
}); 

我已經嘗試過評論上述兩節。第1部分將所有內容都突出顯示,並且不會提交表單。第2部分將我的表格提交給第二個正在驗證的項目。兩部分的輸入都是同一表單的一部分。請讓我知道是否還有別的東西我應該解釋這種情況。總之,我正在尋找一種方法來驗證基於id的每個項目,並且一旦第一組已經通過,打開對話框,允許用戶輸入第二組並且驗證第二組字段。最後,提交表格。

預先感謝您的任何指導。

+0

檢出ValidForm;它實現了爲表單驗證做所有事情的JQuery。去谷歌上查詢! :) – blanknamefornow 2011-02-24 22:36:28

回答

1

這樣做的一種方法是創建一個驗證函數,如果所有字段都看起來不錯,則返回return false; ...如果它返回true,則顯示對話框。

一個簡單的例子給你(我做我自己的變化,但你應該明白我的意思):http://jsfiddle.net/iwasrobbed/acU4Q/1/

順便說一句,如果你檢查0長度在球場上,請確保您使用trim()所以你刪除任何空格。你現在擁有它的方式,按一次空格鍵實際上意味着即使字段爲空,輸入也是有效的。

0

您可以將所需的任何行爲綁定到表單的提交操作。下文介紹形式在AJAX外出我會怎麼做:

$(document).ready(function() { 
    $("form#first").submit(function() { 
    if (validate(this)) { $("form#second").show(); } 
    return false; // to prevent the form from going to your server 
    }); 
    $("form#second").submit(function() { 
    var form = $(this); 
    if (validate(form)) { 
     $.ajax({ 
     url: form.attr("action"), 
     data: form.serialize() + $("form#first").serialize(), 
     type: form.attr("method"), 
     dataType: "script" 
     }); 
    } 
    return false; 
    }); 
}); 

基本上,如果第一種形式是有效的,你打開第二種形式。那麼如果第二種形式是有效的,你提交的數據都是表格。

如果你想同步做到這一點,我的理解是,你可以爲$.ajaxasync選項設置爲false和和dataType行動"html",雖然我從來沒有這樣做我自己。