2012-12-12 133 views
0

我完全相信如何描述我的問題。但是,我會給它一個鏡頭。在對話框中提交觸發失敗的jquery(模態)

我有幾個觸發器分配給使用JQuery的HTML元素。觸發器1,專門爲此特定表單驗證項目。第二個觸發器是確定觸發器1的確認後的觸發器。

發生了什麼事,你會看到下面的代碼if ($(".Reason").val() == 4) {會彈出一個對話框窗口,它會給出兩個選項,yes/no。是的,將調用觸發器2(提交),否則關閉更正...

如果條件不滿足,trigger2(提交)正確處理併發布表單。然而,就像return false正在阻止條件是否被滿足。

一些線條是不敬的,但我把它們留在那裏...如果共識要刪除,我會的。

對不起,大量的代碼。

希望有人能幫助!

$(".validateForm").click(function() { 

     if ($(".Reason").val() == 4) { 
      //bankingModal 
      ExpectedAmount = $(".CloseAmount").val(); 
      cashTotal = parseInt($(".cashtotal").val());     
      chequeTotal = parseInt($(".chequeTotal").val());   

      formTotal = cashTotal + chequeTotal; 
      formTotal = parseFloat(formTotal).toFixed(2); 

      if (formTotal !== ExpectedAmount) { 
       $(".bankModal").dialog({ 
        resizable: false, 
        height: 210, 
        width: 400, 
        modal: true, 
        position: 'center', 
        buttons: { 
         'Yes - Submit': function() { 
          $('.submit').click() 
          $(this).dialog("close"); 

         }, 
         'No - Cancel': function() { 
          $(this).dialog("close"); 
         } 
        } 
       }) 
      } 
     } else { 
      //submitBanking(); 
      $('.submit').click() 
     } 
     return false; 
}) 

// The following is the second trigger. 

$('.submit').click(function() { 

// Unset error 

     formErr = false; 
     window.onbeforeunload = null; 

     // Validation for Change Request 
     if ($(".outgoing").length > 0) { 
      if (validateChangeRequest()) { 
       formErr = true; 
      } 
     } 

     // If text box is empty change values to 0.00 
     $('.cashSum', '.cashSumOut').each(function() { 
      if (!$(this).val()) { 
       $(this).val('0.00'); 
      } 

     }); 

     // Check if numeric values are ok prior to submit. 
     $(".cashAmount").each(function() { 
      if (isNaN($(this).val())) { 
       modal("", "Only numbers are permitted"); 
       formErr = true; 
      } 
      if (checkNegatives($(this))) { 
       modal($(this), "Negative values are not permitted"); 
       formErr = true; 
      } 
     }); 
     if (formErr) { 
      return false; 
     } 
     if ($("#cashCheque").length != 0) {   
      return false; 
     } 
    }); 

回答

0

爲什麼每次創建對話框時都會滿足條件。

只需在DOM ready handler中創建一次,並在條件滿足時打開對話框。

$(".validateForm").click(function() { 

    if ($(".Reason").val() == 4) { 
     //bankingModal 
     ExpectedAmount = $(".CloseAmount").val(); 
     cashTotal = parseInt($(".cashtotal").val()); 
     chequeTotal = parseInt($(".chequeTotal").val()); 

     formTotal = cashTotal + chequeTotal; 
     formTotal = parseFloat(formTotal).toFixed(2); 

     if (formTotal !== ExpectedAmount) { 
      $(".bankModal").dialog('open'); 
     } 
    } else { 
     //submitBanking(); 
     $('.submit').click() 
    } 
    return false; 
}); 

$(".bankModal").dialog({ 
    resizable: false, 
    height: 210, 
    width: 400, 
    modal: true, 
    position: 'center', 
    autoOpen : false, 
    buttons: { 
     'Yes - Submit': function() { 
      $('.submit').click() 
      $(this).dialog("close"); 

     }, 
     'No - Cancel': function() { 
      $(this).dialog("close"); 
     } 
    } 
});​ 

UPDATE

需要提交表單時沒有錯誤

if (formErr) { 
    return false; 
} 
if ($("#cashCheque").length != 0) {   
    return false; 
} 

$('form').submit(); // submit when no errors 
+0

很好的建議,但是,$( '提交')。點擊()仍然沒有張貼它的意思是它的形式處理觸發器沒有發佈... – goingsideways

+0

我看到你沒有提交任何形式.. $('form')。submit() –

+0

這個工作,但是,.submit類與一個帶有OnClick的ASP按鈕,其中調用一個C#代碼隱藏功能。 – goingsideways

相關問題