Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改时事件不会使用javascript输入触发_Javascript_Jquery_Html - Fatal编程技术网

更改时事件不会使用javascript输入触发

更改时事件不会使用javascript输入触发,javascript,jquery,html,Javascript,Jquery,Html,我有一个文本区域,我想在每次发生更改时触发事件。我编写了on input事件,当我使用键盘输入更改时,更改事件会完美地触发。然而,我正在为移动设备设计定制键盘。正如您在下面看到的,如果我使用自定义键盘,它使用javascript向文本区域输入值,那么更改事件根本不会触发 当通过javascript完成输入时,是否有方法跟踪更改事件 $('main')。在('input','上。使用键盘输入',函数(){ 警报(`On input event FIELED`) }) 常量键盘={ 要素:{ ma

我有一个文本区域,我想在每次发生更改时触发事件。我编写了on input事件,当我使用键盘输入更改时,更改事件会完美地触发。然而,我正在为移动设备设计定制键盘。正如您在下面看到的,如果我使用自定义键盘,它使用javascript向文本区域输入值,那么更改事件根本不会触发

当通过javascript完成输入时,是否有方法跟踪更改事件

$('main')。在('input','上。使用键盘输入',函数(){
警报(`On input event FIELED`)
})
常量键盘={
要素:{
main:null,
keysContainer:null,
钥匙:[]
},
事件处理程序:{
oninput:null,
onclose:null
},
特性:{
值:“”,
卡普斯洛克:错
},
init(){
//创建主要元素
this.elements.main=document.createElement(“div”);
this.elements.keysContainer=document.createElement(“div”);
//设置主要元素
this.elements.main.classList.add(“键盘”,“键盘--隐藏”);
这个.elements.keysContainer.classList.add(“键盘按键”);
this.elements.keysContainer.appendChild(this._createKeys());
this.elements.keys=this.elements.keysContainer.queryselectoral(“.keyboard__键”);
//添加到DOM
this.elements.main.appendChild(this.elements.keysContainer);
document.body.appendChild(this.elements.main);
//自动为具有的元素使用键盘。使用键盘输入
document.queryselectoral(“.use keyboard input”).forEach(元素=>{
元素。addEventListener(“焦点”,()=>{
this.open(element.value,currentValue=>{
element.value=当前值;
});
});
});
},
_createKeys(){
const fragment=document.createDocumentFragment();
常量键布局=[
“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“0”、“退格”,
“q”、“w”、“e”、“r”、“t”、“y”、“u”、“i”、“o”、“p”,
“大写”、“a”、“s”、“d”、“f”、“g”、“h”、“j”、“k”、“l”、“enter”,
“完成”,“z”,“x”,“c”,“v”,“b”,“n”,“m”,“m”,“x”,“x”,“c”,“v”,“b”,“n”,“m”,“m”,“m”,“m”,“z”,“x”,“c”,“v”,“b”,“n”,“m”,“m”,“m”,“m”,“m”,“m”,“m”,“z”,“x”,“c”,“c”,“v”,“b”,“m”,“m”,“,
“空间”
];
//为图标创建HTML
const createIconHTML=(图标名称)=>{
返回`${icon_name}`;
};
keyLayout.forEach(键=>{
const keyElement=document.createElement(“按钮”);
const insertLineBreak=[“backspace”,“p”,“enter”,“?”];
//添加属性/类
setAttribute(“类型”、“按钮”);
keyElement.classList.add(“键盘键”);
开关(钥匙){
案例“backspace”:
keyElement.classList.add(“keyboard\uu key--wide”);
keyElement.innerHTML=createIconHTML(“退格”);
keyElement.addEventListener(“单击”,()=>{
this.properties.value=this.properties.value.substring(0,this.properties.value.length-1);
本._triggerEvent(“oninput”);
});
打破
案例“caps”:
keyElement.classList.add(“keyboard\uu key--wide”,“keyboard\uu key--activatable”);
keyElement.innerHTML=createIconHTML(“键盘”\u capslock”);
keyElement.addEventListener(“单击”,()=>{
这个;
keyElement.classList.toggle(“keyboard\uu key--active”,this.properties.capsLock);
});
打破
案例“输入”:
keyElement.classList.add(“keyboard\uu key--wide”);
keyElement.innerHTML=createIconHTML(“键盘返回”);
keyElement.addEventListener(“单击”,()=>{
this.properties.value+=“\n”;
本._triggerEvent(“oninput”);
});
打破
案例“空间”:
keyElement.classList.add(“键盘__键——超宽”);
keyElement.innerHTML=createIconHTML(“空格键”);
keyElement.addEventListener(“单击”,()=>{
this.properties.value+=“”;
本._triggerEvent(“oninput”);
});
打破
案例“完成”:
keyElement.classList.add(“键盘键--宽”,“键盘键--暗”);
keyElement.innerHTML=createIconHTML(“检查圆”);
keyElement.addEventListener(“单击”,()=>{
这个。关闭();
本._triggerEvent(“onclose”);
});
打破
违约:
keyElement.textContent=key.toLowerCase();
keyElement.addEventListener(“单击”,()=>{
this.properties.value+=this.properties.capsLock?key.toUpperCase():key.toLowerCase();
本._triggerEvent(“oninput”);
});
打破
}
appendChild(keyElement);
如果(插入换行符){
fragment.appendChild(document.createElement(“br”));
}
});
返回片段;
},
_triggerEvent(handlerName){
if(this.eventHandlers[handlerName]=“函数”的类型){
this.eventHandlers[handlerName](this.properties.value);
}
},
_toggleCapsLock(){
this.properties.capsLock=!this.properties.capsLock;
for(此.elements.keys的常量键){
if(key.childElementCount==0){
key.textContent=this.p