2010-07-27 7 views
3

J'ai trouvé quelque chose d'intéressant dans jQuery, et je voulais le faire tourner par des gens qui le comprennent mieux que moi pour voir s'il y a une solution pour cela. Donc, je veux poster la position de défilement de la page lors de la soumission de tous les formulaires sur ma page. Je peux le faire en procédant comme suit:jQuery soumettre solution de contournement

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

Cela fonctionne comme prévu lorsque l'utilisateur clique ou appuie sur Entrée sur le bouton d'envoi, mais il y a des moments où je déclenche l'événement .submit(). Exemple de ceci:

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

Comment puis-je obtenir mon habitude de soumettre rappel à appeler à chaque fois que la page est soumise quel que soit qu'il soit initié par un appel ou l'envoi d'un formulaire utilisateur .submit()?

+0

J'ai fait un exemple o jsbin: http://jsbin.com/ixiza/edit Je me attends à deux boutons pour exécuter la fonction d'envoi. Espérons que cela arrange les choses. – karlw

Répondre

3

Pas besoin pour faire une nouvelle fonction, si vous ne voulez pas. Il suffit d'utiliser .submit() de jquery et votre travail est terminé. Vérifiez la différence.

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

Codage heureux.

+0

parfait. Je suppose que je serais intéressant d'apprendre quelle est la différence entre: $ (this) .parents ('form') [0] .submit(); et var form = $ (this) .parents ('forme') [0]; $ (forme) .submit(); – karlw

+0

S'il vous plaît regarder ma réponse. – IsmailS

1

Vous pouvez créer une fonction pour cela et appeler avant de le soumettre:

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

Plus tard, vous pouvez faire:

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

Ou:

$('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(); 
} 
Questions connexes