2013-01-23 86 views
0

我有一些瘋狂的麻煩,我無法弄清楚如何解決它。我有一個表單在提交按鈕上有一個「return submitNotes」(onclick)。我有submitNotes函數,它似乎調用它很好,但在我的函數中,我有一個似乎沒有被解僱的ajax調用。我已經將警報置於ajax調用中,並且好奇的是,當我在頁面底部返回false時,警報纔會消失。如果我將註釋退出,它甚至不會顯示警報。在這兩種情況下,ajax調用似乎都不會觸及它的頁面。任何你們可以幫助的事情!奇怪的形式行爲

function submitNotes(rID){ 

    ts = getTs(); //this is so IE sees a unique URL being called everytime. 
    var consignor = $('#consignor').val() 
    var consignee = $('#consignee').val(); 
    var consignorRequired = $('#consignorRequired').val(); 

    if(consignorRequired=='true'){ 

      if(consignor==''){ 
       alert('Consignor information is required!'); 
       return false; 
      } 

      if(consignee==''){ 
       alert('Consignee information is required!'); 
       return false; 
      } 
    } 

    $('#loading_notes').show(); 

    $.get('/scripts/claim_sendTo.asp?action=pending&rID='+rID+'&auditorID=1',function(){ 
     alert('hello2'); 
     $('#claimForm').submit(); 
    }); 

    //return false; 

} 
+0

爲什麼投票結束?關於這個問題,這太局部化了?這是一個很常見的問題,人們碰到 –

回答

0

當您取消註冊return false時,警報將消失,因爲您處於onsubmit事件的上下文中。從該事件返回false取消它,允許您的jquery執行。否則,表格重新載入頁面

+0

我將提交按鈕更改爲鏈接並在onclick上調用該函數,但它仍不會執行ajax調用。我有一個網頁上的其他地方的電話,它在那裏工作得很好。我甚至複製並粘貼了代碼,但沒有任何代碼 – Damien

+0

除了取消註釋'return false'語句之外,您不需要做任何其他操作。觀察AJAX調用是否在Firebug的網絡選項卡或IE開發工具網絡選項卡中發佈,或者使用fiddler。如果您看到警報「hello2」,意味着您的ajax呼叫熄滅了。 –

0

您可能想要嘗試的是防止事件的默認行爲。

您可能希望在表單上使用onsubmit =「」而不是onclick =「」,因爲這樣您就可以停止在覈心處提交表單。

然後,您需要將事件對象傳遞給提交函數。它允許對事件進行更好的控制,而不必太依賴返回值。

<form method="post" action="X" onsubmit="submitNotes(event)"> 

// Somewhere in your JavaScript 
function submitNotes(event) { 
    if (event.preventDefault) event.preventDefault(); 
    else window.event.cancelBubble = true; 
    // the rest of the event code 
} 

這應該是一個好的開始。

如果你想堅持使用onclick事件,你可能想嘗試以下操作:

<form method="post" action="X" onsubmit="if (event.stopPropagation) event.stopPropagation(); else window.event.cancelBubble = true"> 

這應該防止形式從處理提交。

我可以推薦你使用jQuery的$('form').submit(...)事件處理嗎?

+0

它重新加載頁面,但它確實進入了代碼。如果我在load_notes.show之後放置警報,它會顯示出來。它是在$ .get請求中它不起作用的時候。 – Damien