使用jQuery在文本输入上触发keydown,在事件后保留值

时间:2018-02-16 14:18:42

标签: javascript jquery angularjs tampermonkey

在angularjs网站上使用Tampermonkey。 每当我打开网址时,我都会使用值预填充输入框,但是通过键入来触发搜索。所以我需要一个keydown事件,即“空格”来触发搜索。

我已经弄清楚如何触发keydown事件,但它会覆盖输入框中已有的值。 如何保留它,同时仍会触发keydown?

MAX_PGRAPH_LENGTH

我正在使用延迟,因为页面需要一些时间来加载。

1 个答案:

答案 0 :(得分:1)

每次keydown事件运行时,旧值都会被清除,并被新的String.fromCharCode字符替换。

//Try this
(function() {
'use strict';

var herId = getParameterByName('Q');
window.setTimeout(function() {
    var el = document.querySelector('.form-control');
    el.value = herId;
}, 200);

window.setTimeout(function() {
    var e = jQuery.Event("keydown");
    e.which = 32; // # Some key code value

    $("input").val($(this).val() + String.fromCharCode(e.which));
    $("input").trigger(e);
}, 1600);
})();

function getParameterByName(name, url) {
   if (!url) url = window.location.href;
   name = name.replace(/[\[\]]/g, "\\$&");
   var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
   results = regex.exec(url);
   if (!results) return null;
   if (!results[2]) return '';
   return decodeURIComponent(results[2].replace(/\+/g, " "));
}