8
votes

Simulez la touche Entrée dans le champ Formulaire et préservez d'autres gestionnaires

Nous essayons de faire une approche générique pour un logiciel que nous développons des liens dans des champs de formulaire.

jusqu'à présent si bon, mais nous courons dans un cas de bord qui empêche la soumission d'un formulaire / champ Cela a un autre gestionnaire attaché à ce sujet. p>

voici le boîtier d'utilisation (condensé): p>

HTML: P>

$('#field1').keypress(function (event) {
  if (event.which == 13) {
    console.log("enter pressed");
    //return false; only if needed
  }
});

$( "#link" ).click(function() {
  var e = jQuery.Event('keypress');
  e.which = 13; // #13 = Enter key
  $("#field1").focus();
  $("#field1").trigger(e);
})


5 commentaires

Vous voulez donc appuyer sur la touche Entrée et cliquer sur le lien pour appeler le gestionnaire inconnu?


Je ne comprends pas bien ce que vous cherchez. Vous dites que vous voulez que le formulaire soumet à chaque fois que quelqu'un clique sur "Entrée" mais sans utiliser Soumettre ()?


Non, cliquez sur "Cliquer pour soumettre" doit soumettre le formulaire comme poussant "Entrée". Essayez de remplir «FOO» et cliquez sur le lien. Cela devrait avoir le même effet que de remplir "foo" et frapper une entrée.


@ Unicorn80 - Ils ont tous les deux le même effet pour moi. Que je clique sur le bouton / lien ou frappez entrez , le formulaire est soumis.


@Marcus quel navigateur? En cliquant sur le lien ne soumet pas le formulaire en chrome (pour moi au moins)


3 Réponses :


1
votes

Vous pouvez engager les gestionnaires inconnus à l'aide de Unbind ('Soumettre') puis utilisez Soumettre () Comme suit. XXX


0 commentaires

2
votes

Vous devez séparer le gestionnaire de formulaire de l'entrée et cliquez sur les gestionnaires.

$( "#link" ).click(function() {
  formHandler();
});


0 commentaires

6
votes

Que se passe-t-il lorsque vous appuyez sur la touche Entrée, si l'entrée est à l'intérieur d'un formulaire, le formulaire est soumis. Ceci est le comportement par défaut. Lorsque vous simulez une touche appuyez sur une touche, vous devez faire la même chose, à moins que le comportement par défaut ne soit empêché.

$('#field1').keypress(function (event) {
  if (event.which == 13) {
    console.log("enter pressed");
    // event.preventDefault(); if needed
  }
});

$( "#link" ).click(function() {
  var e = jQuery.Event('keypress');
  e.which = 13; // #13 = Enter key
  $("#field1").focus();
  $("#field1").trigger(e);
  var form=$("#field1").closest("form");
  if(form&&!e.isDefaultPrevented()) form.submit();
})


0 commentaires