Bu soruların tüm cevaplarını okudum ve çözümlerin hiçbiri işe yaramadı.
Ayrıca, özel karakterlerle tuşa basmayı tetiklemenin hiç işe yaramadığı vibe alıyorum. Birisi bunu kimin yaptığını doğrulayabilir mi?
Bu soruların tüm cevaplarını okudum ve çözümlerin hiçbiri işe yaramadı.
Ayrıca, özel karakterlerle tuşa basmayı tetiklemenin hiç işe yaramadığı vibe alıyorum. Birisi bunu kimin yaptığını doğrulayabilir mi?
Yanıtlar:
Tuşa basma veya tuşa basma olayını tetiklemek istiyorsanız, yapmanız gereken tek şey:
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
$("input").trigger(e);
JQuery 1.6+ ile biraz daha özlü :
var e = jQuery.Event( 'keydown', { which: $.ui.keyCode.ENTER } );
$('input').trigger(e);
(JQuery kullanıcı arayüzü kullanmıyorsanız, bunun yerine uygun anahtar kodunu girin.)
.trigger(jQuery.Event('name', props))
. Örneğe bakın jsfiddle.net/9ggmrbpd/1 - tetiklenen olayın özellikleri olduğu gibi iletilir. Kaynak kodu: github.com/jquery/jquery/blob/master/src/event.js#L739
Gerçek cevap keyCode içermelidir:
var e = jQuery.Event("keydown");
e.which = 50; // # Some key code value
e.keyCode = 50
$("input").trigger(e);
JQuery'nin web sitesi, hangi ve keyCode'un normalleştirildiğini söylese de, çok kötü yanılıyorlar. E.which ve e.keyCode için standart çapraz tarayıcı kontrollerini yapmak her zaman en güvenlidir ve bu durumda her ikisini de tanımlar.
e.keyCode = e.which = 50;
tek bir satırda daha güzel olurdu. :)
keyCode
işe yaramadığını öğrendim . Her ikisini de çalışmak için ayarlamak zorunda kaldım
JQuery kullanıcı arayüzünü de kullanıyorsanız, bunu yapabilirsiniz:
var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input").trigger(e);
Tamam, benim için bu işe yarar ...
var e2key = function(e) {
if (!e) return '';
var event2key = {
'96':'0', '97':'1', '98':'2', '99':'3', '100':'4', '101':'5', '102':'6', '103':'7', '104':'8', '105':'9', // Chiffres clavier num
'48':'m0', '49':'m1', '50':'m2', '51':'m3', '52':'m4', '53':'m5', '54':'m6', '55':'m7', '56':'m8', '57':'m9', // Chiffres caracteres speciaux
'65':'a', '66':'b', '67':'c', '68':'d', '69':'e', '70':'f', '71':'g', '72':'h', '73':'i', '74':'j', '75':'k', '76':'l', '77':'m', '78':'n', '79':'o', '80':'p', '81':'q', '82':'r', '83':'s', '84':'t', '85':'u', '86':'v', '87':'w', '88':'x', '89':'y', '90':'z', // Alphabet
'37':'left', '39':'right', '38':'up', '40':'down', '13':'enter', '27':'esc', '32':'space', '107':'+', '109':'-', '33':'pageUp', '34':'pageDown' // KEYCODES
};
return event2key[(e.which || e.keyCode)];
};
var page5Key = function(e, customKey) {
if (e) e.preventDefault();
switch(e2key(customKey || e)) {
case 'left': /*...*/ break;
case 'right': /*...*/ break;
}
};
$(document).bind('keyup', page5Key);
$(document).trigger('keyup', [{preventDefault:function(){},keyCode:37}]);
Geçerli imleci ve metin seçimini dikkate almanız gerekirse ...
Bu benim için Chrome'daki AngularJS uygulaması için işe yaramıyordu. Nadia'nın orijinal yorumlarda belirttiği gibi, karakter giriş alanında asla görünmez (en azından benim deneyimimdi). Ayrıca, önceki çözümler giriş alanındaki geçerli metin seçimini dikkate almaz. Harika bir kütüphane jquery seçim kullanmak zorunda kaldı .
Birden çok giriş alanını dolduran özel bir ekran sayısal tuş takımım var. Yapmak zorundaydım...
Bulanıklaştırma durumunda, geçerli metin seçimini kaydedin (başlat ve durdur)
var pos = element.selection('getPos')
lastFocus.pos = { start: pos.start, end: pos.end}
Tuş takımımdaki bir düğmeye basıldığında:
lastFocus.element.selection( 'setPos', lastFocus.pos)
lastFocus.element.selection( 'replace', {text: myKeyPadChar, caret: 'end'})
Bunu kullanmak istediğiniz tek bir satırda
$("input").trigger(jQuery.Event('keydown', { which: '1'.charCodeAt(0) }));
console.log( String.fromCharCode(event.charCode) );
sanırım karakter harita gerek yok.
Bu dokümanlar gibi başarılabilir
$('input').trigger("keydown", {which: 50});