我有一个输入字段,用户可以在其中写东西。我希望,如果用户按下键“1”,模拟另一个键按下“F”。因此,如果用户键入字符 1,则在该字段中将显示 1f。我该怎么做,而不使用 jQuery?
我尝试在特定的模拟Enter中.这是我的代码:JavaScriptTextArea
function enter1() {
var keyboardEvent = document.createEvent('KeyboardEvent');
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? 'initKeyboardEvent' : 'initKeyEvent';
keyboardEvent[initMethod]('keydown', // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
13, // keyCodeArg : unsigned long the virtual key code, else 0
13 // charCodeArgs : unsigned long the Unicode character associated with the depressed …Run Code Online (Sandbox Code Playgroud) 我正在尝试尽可能精确地更新文本输入的值与DOM级别3规范.
keydown
keypress
beforeInput
(插入)
input
keyup
简单地触发上述事件不会将字符插入到字段中,我相信这是大多数浏览器的标准.
所以我需要e.target在调度input事件之前将字符添加到's值中.
输入事件(大多数)看起来像这样:
没有关键位置值,所以我不确定将data属性添加到目标的位置!
我需要保存的keydown事件中是否有任何数据,然后等待紧接着的输入事件?我是否可以仅根据输入事件给出的信息将数据添加到输入中?
我的页面中有一个可滚动的DIV,而页面上没有其他元素.(页面布局固定在DIV本身上方和下方的控件上.)我希望箭头键和页面向上/向下翻页以在所有情况下滚动DIV,但除非DIV实际上具有焦点,否则我似乎无法这样做.其他DIV中还有其他输入字段,通常具有焦点.我已经尝试在文档级捕获箭头键和页面/向上/向下'keydown'事件并直接模拟相同的事件(使用此问题的答案)到需要滚动的DIV,但不会发生滚动.我知道正在调度该事件,因为如果我附加一个事件处理程序,我会看到它,但由于某种原因它不会导致任何滚动.我也试过设置DIV的"tabIndex"属性没有区别.
如何指定特定元素来接收这样的特定键?当某些键只能对页面上的单个元素有意义时,要求特定元素专注于某些键才能工作,这对用户来说是非常不友好的.不得不经常将焦点从另一个元素切换到可滚动区域以滚动和返回以输入数据.
我已经看到了可以通过其他方式模拟滚动的建议,但我想避免使用该路由,因为这并不总是产生相同的结果,并且我还希望将其推广到除滚动之外的其他类型的关键事件和动作.
我试图实现相当于用纯JavaScript编写的jQuery(下面):
$('input[name=\"myelementname\"]').keyup();
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有找到一个简单的解决方案.有任何想法吗?