2011-12-03 121 views
3

我有以下的HTML表單jQuery的提交沒有被提交

<form action="/newPost" id="submit_new" method="get"><div class="iwill"> 
    <div class="iwill-holder"> 
     <div class="txt"></div><div class="f"><input class="text" id="quickpost" name="quickpost" type="text" value=""></div> 
     <div class="img regularProgress" alt="Processing..."><input alt="Continue" class="iwill-btn movable" id="continue_submit" src="<?=$config['http']?>images/btn-2-continue-gray.png" type="image"></div> 
    </div> 
</div> 
</form> 

,並在這裏停止形式是jQuery函數:

$('#submit_new').submit(function() { 

var error = 0; 

    var quickpost = $("#quickpost").val(); 
    if(quickpost == '') { 
    $("#quickpost").effect("shake", { times:3 }, 50); 
    $('#quickpost').css("color","red"); 
    $('#quickpost').css("border","red 1px solid"); 
    error = 1; 

    }else{ 
     $('#quickpost').css("border","gray 1px solid"); 
     $('#quickpost').css("color","black"); 
     error = 0; 
    } 


    if(errorCounter > 0){ 
     return false; 
    }else{ 

     $.ajax({ 
        url: 'sendPost.php?quickpost='+quickpost, 
        success: function(data) { 
        $('#result').prepend(data).slideDown('slow', function() {}); 

        } 
       }); 
    } 
    return false; 
}); 

技術上我試圖用張貼表單值ajax,但無論我做什麼,表單仍然會被提交到操作頁面。我曾嘗試甚至使所有路徑導致false但它不工作

+1

您是否將此包裝在$(document).ready中(? – James

+0

James可能是對的。您還可以檢查FireFox錯誤控制檯,是否有任何javascript錯誤終止了函數的流動(所以false不會返回Jquery調用函數)和表單正在提交。 – jatanp

+0

不,我在表單後添加javascript代碼...所以我猜那裏沒有必要嗎? –

回答

2

嘗試阻止默認行爲

$('#submit_new').click(function(e) { 
e.preventDefault(); 
... 

你也有一個錯字

if(errorCounter > 0){ 
    return false; 
}else{ 

應該是:

if(error > 0){ 
    return false; 
}else{ 
+0

我沒有通過點擊提交按鈕來提交表單,我只是按下回車鍵,我知道這聽起來像是一個noob問題,但不會意味着上述函數不會被調用? –

+1

事件是通過按回車或點擊提交按鈕,你的代碼失敗了,因爲errorCounter因爲你而不是undefiend sed變量錯誤,而不是errorCounter – Nenad

0

事件偵聽器方法並不在乎您從偵聽器函數返回的內容。您需要在傳入的事件對象上使用jquery preventdefault方法。

+1

這不是真的:'return false;'類似於('event = arguments [0]')'event.stopPropagation(); event.preventDefault();' – andlrc

1
$('#submit_new').submit(function(e) { 
    e.preventDefault(); 
    //other stuff 
}); 

您需要提交函數中的preventDefault()。

1

我有一個版本仍然使用return false防止表單提交 http://jsfiddle.net/pKR6G/2/

NB:我註釋掉的防抖效果的線,所以我並不需要包括jQueryUI的。