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

标签 javascript jquery angularjs tampermonkey

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

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

(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(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, " "));
}

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

最佳答案

每次运行 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, " "));
}

关于javascript - 使用 jQuery 在文本输入上触发 keydown,在事件发生后保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48828733/

相关文章:

javascript - Angular 2 DOM 绑定(bind)数据不准确

javascript - jQuery - 右键单击​​嵌套的单个 <li> 元素时获取它的 id

jquery - 将网站加载到 DIV 中

html - 当我在模式弹出窗口中打开日历时,它会被截断

json - Spring MVC + AngularJS 415 不支持的媒体类型

angularjs - 具有此名称的 Controller 未在 angularjs ngroute 中注册

javascript - 在资源文件中配置 JS 库与 package.json 相比有何优点/缺点?

javascript - JS : Regex in replace

javascript - 重新连接后未触发 socket.io 'connect' 或 'reconnect' 事件

javascript - jQuery 选择器性能 : by ID versus by tag with ID pattern