jQuery submit workaround

2019-07-06 17:21发布

I found something interesting in jQuery, and I wanted to run it by some folks who understand it better than me to see if there is a solution for it. So I want to post back the scroll position of the page when submitting all forms on my page. I can do this by doing the following:

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

This works as expected when user click or presses enter on the submit button, but there are times where I fire the .submit() event. Example of this:

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

How would I go about getting my custom submit callback to be called whenever the page is submitted regardless of it being initiated by a .submit() call or the user submitting a form?

标签: jquery submit
4条回答
放荡不羁爱自由
2楼-- · 2019-07-06 17:21

No need to make new function, if you don't want. You just have to use jquery's .submit() and your work is done. Check the difference.

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

Happy Coding.

查看更多
萌系小妹纸
4楼-- · 2019-07-06 17:43

You can create a function for that and call it before submitting:

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

Later you can do:

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

Or:

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

    storePosition();
    $(this).parents('form')[0].submit();
}
查看更多
迷人小祖宗
5楼-- · 2019-07-06 17:47
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();
}
查看更多
登录 后发表回答