Je veux ajouter 'a' à la valeur d'entrée en cliquant sur un bouton
Voici mon code (avec jQuery 1.4.4):
$("#button").click(function(){
$("#input").trigger("focus");
var e = jQuery.Event("keypress");
e.which = '97';
$("#input").trigger(e);
})
Cependant, il ne semble que déclencher un événement 'focus', mais n'a pas réussi à 'appuyer sur une touche'.
comme ça?? Désolé, je suis confus avec vos écrits ..
$("#button").click(function(){
$("#input").trigger("keypress") // you can trigger keypress like this if you need to..
.val(function(i,val){return val + 'a';});
});
référence: .val (fonction (index, valeur));
J'ai utilisé:
$('#selector').val(quantity).trigger("input");
Pourquoi ne pas simplement ajouter à val()
?
$("#button").click(function(){
$("#input").val(
$("#input").val() + "a"
);
})
J'ai su comment y faire face.
Ajoutez un événement eventListener on keypress à l'entrée et utilisez val pour modifier la valeur.
De cette façon, il n'est pas nécessaire de déclencher un événement de focus.
$("#button").click(function(){
var e = jQuery.Event("keypress");
e.chara = 'a';
$("#input").trigger(e);
});
$("#input").keypress(function(e){
$(this).val(e.chara);
})
Selon la documentation
Bien que .trigger () simule une activation d’événement, complétez avec un objet événement synthétisé, il ne réplique pas parfaitement un événement naturel.
donc le mieux que vous puissiez faire est
$("#button").click(function(){
$("#input").trigger("focus").val($("#input").val() + 'a');
})
Si vous devez prendre en compte le curseur et la sélection de texte en cours ...
Cela ne fonctionnait pas pour moi pour une application AngularJS sur Chrome. Quelqu'un a fait remarquer que l'événement déclencheur ne rendra pas le caractère visible dans le champ de saisie (du moins, c'est ce que je voyais). De plus, les solutions précédentes ne prennent pas en compte la position actuelle du curseur et la sélection de texte dans le champ de saisie. Je devais utiliser une merveilleuse bibliothèque jquery-selection .
J'ai un clavier numérique personnalisé à l'écran qui remplit plusieurs champs de saisie. J'ai dû...
En cas de flou, enregistrez la sélection de texte actuelle (début et fin)
var pos = element.selection('getPos')
lastFocus.pos = { start: pos.start, end: pos.end}
Lorsque vous appuyez sur un bouton du clavier my:
lastFocus.element.selection( 'setPos', lastFocus.pos)
lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})