簡體   English   中英

jQuery在提交表單之前先在對話框中驗證表單

[英]jquery validate form in dialog before submit form

目前,我在頁面上有一組字段。 單擊該按鈕,並且通過了這些字段的驗證后,將出現一個對話框模式框。 此框還有一些其他字段,必須先填寫這些字段,然后才能提交表單。

如何顯示第一組字段已驗證並打開對話框而無需提交表單,直到對話框字段也已驗證?

$( "#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驗證每個項目的方法,一旦第一組通過,請打開對話框,允許用戶輸入第二組並驗證第二組字段。 最后,提交表格。

預先感謝您的指導。

一種方法是創建一個validate函數並return true; 如果所有字段看起來都不錯,否則return false; ...如果返回true,則顯示對話框。

為您提供一個簡單的示例(我做了自己的修改,但您應該明白了): http : //jsfiddle.net/iwasrobbed/acU4Q/1/

順便說一句,如果要在字段上檢查0長度,請確保使用trim()以便刪除所有空格。 按當前方式,一次按下空格鍵實際上將意味着輸入有效,即使該字段為空白。

您可以將所需的任何行為綁定到表單的提交操作。 如果表單通過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 action設置為"html" ,盡管我從來沒有自己做過。

暫無
暫無

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

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