在输入框内按下按键

press key inside an input box

我正在使用

填写登录表单
     document.getElementById('i0116').value = email;
     document.getElementById('i0118').value = password;
     document.getElementById('idSIButton9').click();

现在,当表单识别出该值未被任何键事件填充时,问题就开始了,我的意思是占位符仍然存在,即使我填写了表单并且在提交时它说字段为空。

我试图通过在填充值之前在输入框上触发按键事件来修复它。但我做不到。 我试过了:

var target = document.getElementById('email');
var evt = document.createEvent("Events");

evt.initEvent("keypress", true, true);

evt.view = window;
evt.altKey = false;
evt.ctrlKey = false;
evt.shiftKey = false;
evt.metaKey = false;
evt.keyCode = 0;
evt.charCode = 'a';

target.dispatchEvent(evt);

我也尝试了 "UIEVENTS""KEYEVENTS" [=28= 而不是 "Events" ] 他们帮助了,我正在使用 chrome 浏览器。

刚刚掌握了您真正想要实现的目标。您可以清除占位符值 onClick() 并使用 onBlur() 恢复占位符值,如下所示

function clearPlaceholder(id){
      document.getElementById(id).placeholder = "";
  };

function restorePlaceHolder(id, placeHolderText){
      document.getElementById(id).placeholder = placeHolderText;
  };
<input id="10116" placeholder="email" onClick="clearPlaceholder('10116')" onBlur="restorePlaceHolder('10116','email')">
<input id="10118" placeholder="password" onClick="clearPlaceholder('10118')" onBlur="restorePlaceHolder('10118','password')">

这就是您要找的吗?

我的问题已通过以下方式解决:

var element = document.getElementById('idTxtBx_SAOTCC_OTC');    
var evt = document.createEvent("HTMLEvents");
        evt.initEvent("change", false, true);
        element.dispatchEvent(evt);

这是 knockout js,因为它只是设置元素的值不是 working.so 我正在尝试按键。 knockoutjs 的更改事件触发器 "textInput",而不是仅仅设置 .value 属性。