使用 jQuery 在文本输入上触发 keydown,在事件发生后保留值
Trigger keydown on text-input with jQuery, retain value after event
在 angularjs 站点上使用 Tampermonkey。
每当我打开 url 时,我都会用一个值预填充一个输入框,但搜索是通过键入触发的。所以我需要一个按键事件,即 "space" 来触发搜索。
我已经找到触发按键事件的方法,但它会覆盖输入框中已有的值。
如何保留它,同时仍然触发按键?
(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, " "));
}
在 angularjs 站点上使用 Tampermonkey。 每当我打开 url 时,我都会用一个值预填充一个输入框,但搜索是通过键入触发的。所以我需要一个按键事件,即 "space" 来触发搜索。
我已经找到触发按键事件的方法,但它会覆盖输入框中已有的值。 如何保留它,同时仍然触发按键?
(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, " "));
}