2010-11-22 44 views
0

我想提出一個有2個按鈕的jQuery對話框。這樣用戶可以決定是否繼續進行覆蓋操作。jQuery對話框在頁面加載時運行的按鈕功能

一個按鈕,除了關閉對話窗口之外,「否」按鈕應該什麼也不做。 「Yes」按鈕應該調用一個函數,這個函數可以對我的控制器上的一個action方法進行jQuery post調用。

問題是我的操作方法似乎在頁面加載時運行,它不等待對話框顯示。

下面是對話

<div id="dialog" title="My Dialog Box"> 
     <p> 
      Ballance Already Exsists. Do you wish to overwrite?</p> 
    </div> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#dialog").dialog({ bgiframe: true, autoOpen: false, modal: true, buttons: { 'OK': overWriteBalance(), 'NO': $(this).dialog('close') } 
      }); 
     }); 

    </script> 

的標記和這裏的功能

balanceCheckPost = function (data) { 
     $("#existCheck").val(data); 
     if (data) { 
      // Does Exist 
      $("#existCheck").val("Exist"); 
      // raise confirmation popup 


      $('#dialog').dialog("open"); 

     } 
     else { 
      // Does Not Exist 
      $("#existCheck").val("NOT Exist"); 

      // insert Item 
      var balance = {}; 
      balance.date = $("#bal_Date").val(); 
      balance.amount = $("#bal_Amount").val(); 
      $.post("balance/insert", 
       balance, 
       confirmChange 
       ); 
     } 

    }; 



    function overWriteBalance() { 
     // insert Item 
     var balance = {}; 
     balance.date = $("#bal_Date").val(); 
     balance.amount = $("#bal_Amount").val(); 
     $.post("balance/edit", 
       balance, 
       confirmChange 
       ); 
    }; 

,這裏是我的控制器代碼。

public void edit(Balance bal) 
    { 
     var dataContext = new DataDataContext(); 
     var balToEdit = dataContext.Balances.Single(b => b.Date == bal.Date); 
     balToEdit.Amount = bal.Amount; 
     dataContext.SubmitChanges(); 
    } 

問題是我的控制器中的編輯功能在頁面加載時運行。

是因爲我在$(document).ready中定義了我的對話框按鈕,所以它運行該方法或其他東西。

感謝

回答

0

上overWriteBalance

$(document).ready(function() { 
     $("#dialog").dialog({ bgiframe: true, autoOpen: false, modal: true, buttons: { 'OK': overWriteBalance, 'NO': $(this).dialog('close') } 
     }); 
    }); 

刪除因爲被內聯執行overWriteBalance括號,並分配到OK「事件」,而不是OK按鈕點擊執行結果的支架。

+0

你的開玩笑,我已經把我的頭髮拉出了一會兒......謝謝 – 2010-11-22 10:35:17

0

我剛剛遇到了這個問題 - 但是根本原因不是我的代碼,它是我的包含。如果你看到這個問題,仔細檢查你使用的是jquery和jqueryui的兼容版本。

就我而言,我使用的是「ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js」和「ajax.googleapis.com/ajax/libs/jqueryui/1.8。 11/jQuery的ui.min.js」。結果是按鈕事件代碼正在頁面加載中執行,即使我已經正確定義了它。

只要我用1.5.1替換了jquery 1.3.2,頁面就開始正常工作。

相關問題