2010-03-17 8 views
0

J'ai une page HAML qui répertorie quelques liens pour supprimer des « choses » qui ressemble à ceciformes multiples + HAML + jQuery + Javascript soumettre

%div 
    %a.form_submit Delete Thing 1 
    %form{:href=>"#", :id=>'comment_1', :method=>'post', :action=>'/thing/delete'} 
     %input{:type=>'hidden', :name=>'thingid', :value=>'1'} 
     %input{:type=>'submit', style='display:none'} 

%div 
    %a.form_submit Delete Thing 22 
    %form{:href=>"#", :id=>'comment_22', :method=>'post', :action=>'/thing/delete'} 
     %input{:type=>'hidden', :name=>'thingid', :value=>'22'} 
     %input{:type=>'submit', style='display:none'} 

L'intention est d'avoir un lien « Supprimer XX », qui supprimer quelque chose de spécifique. Une page pourrait avoir un certain nombre de ces liens, et chaque lien est pour une "chose" spécifique.

J'ai aussi un morceau de (discret) javascript jQuery qui ajoute un gestionnaire de clic à chaque forme comme suit:

$('a.form_submit').click(function(event) { 
    $('form').submit(); 
    event.preventDefauilt(); 
}); 

Cela fonctionne quand il y a un formulaire sur une page. Cependant, si j'ai plus d'un formulaire sur une page, comment puis-je m'assurer que cliquer sur "Delete Thing 1" ne déclenchera un événement submit() que sur le formulaire avec id = "comment_1"?

Répondre

1

Je ne suis pas sûr, mais cela pourrait fonctionner ...

$('a.form_submit').click(function(event) { 
    var num = parseInt($(this).text()); 
    $('form#comment_'+num).submit(); 
    event.preventDefauilt(); 
}); 

je vais suggérer aussi de prendre :href=>"#", parce que ce n'est pas un attribut d'une forme ...

+0

Cette réponse a certainement moi sur la bonne voie. –

+0

pourrait aussi bien choisir cela comme réponse ... :) – Reigel

+0

Merci Reigel. Cette réponse m'a le plus proche de ma solution. Ce que j'ai fini par faire était de mettre un identifiant sur le lien, puis en utilisant un remplacement. $ ('a.form_submit'). Cliquez sur (fonction (événement) { var id = this.id.replace (/ comment_/i, ''); $ ('formulaire # comment _' + id) .submit() event.preventDefault(); }); Cette fonction "replace" me permet d'utiliser une convention de nommage (comment_) pour atteindre mon objectif sans avoir de doublons dans le lien et le formulaire. –