2010-07-27 82 views
3

我在jQuery中發現了一些有趣的東西,我想由一些比我更瞭解它的人來運行它,看看它是否有解決方案。所以我想在頁面上提交所有表單時回發頁面的滾動位置。我可以通過執行以下操作做到這一點:jQuery提交解決方法

$('form').submit(function() { 
    $(this).append('<input type="hidden" name="scroll_position" value="' + $(document).scrollTop() + '" />'); 
    return true; 
} 

這種預期在用戶點擊或按提交按鈕進入,但有些時候,我火.submit()事件的作品。這個例子:

$('button').click(function() { 
    ... 
    // Doing something special here 
    ... 
    $(this).parents('form')[0].submit(); 
} 

我怎麼會去讓我的自定義提交回調只要提交頁面,無論它是由一個.submit()調用或用戶提交表單開始被稱爲?

+0

我做出了榜樣Øjsbin: http://jsbin.com/ixiza/edit 我希望兩個按鈕進行提交功能。希望這可以解決問題。 – karlw 2010-07-29 01:17:59

回答

3

無需如果你不想要的話,可以創造新的功能。 你只需要使用jquery的.submit(),你的工作就完成了。檢查差異。

$('button').click(function() { 
    ... 
    // Doing something special here 
    ... 
    var form = $(this).parents('form')[0]; 
    $(form).submit(); 
} 

快樂編碼。

+0

完美。我想我會很有趣的學習什麼之間的區別:$(this).parents('form')[0] .submit();和var form = $(this).parents('form')[0]; $(形式).submit(); – karlw 2010-07-29 01:43:58

+0

請看我的答案。 – IsmailS 2010-07-29 12:25:32

1

您可以爲創建一個函數並在提交之前調用它:

function storePosition(){ 
    $('form').append('<input type="hidden" name="scroll_position" value="' + $(document).scrollTop() + '" />'); 
} 

之後你可以這樣做:

$('form').submit(function() { 
    storePosition(); 
    return true; 
} 

或者:

$('button').click(function() { 
    ... 
    // Doing something special here 
    ... 

    storePosition(); 
    $(this).parents('form')[0].submit(); 
} 
1
function myFrmSubmit(){ 
    $(this).append('<input type="hidden" name="scroll_position" value="' + $(document).scrollTop() + '" />'); 
    return true; 
} 

$('form').submit(myFrmSubmit); 
$('button').click(function() { 
    ... 
    // Doing something special here 
    ... 
    myFrmSubmit(); 
    $(this).parents('form')[0].submit(); 
}