Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 onChange事件影响整个表单_Javascript_User Interface_Uitextfield_Onchange_Webix - Fatal编程技术网

Javascript onChange事件影响整个表单

Javascript onChange事件影响整个表单,javascript,user-interface,uitextfield,onchange,webix,Javascript,User Interface,Uitextfield,Onchange,Webix,这里有一个简短的Webix表单,我试图突出显示值已更改的字段,但我一直坚持这样做 这是我的密码: webix.ui({ view:"form", width: 250, elements: [ { view:"text", label:'Phone', labelPosition: "top", name:"phone", value: "" }, { view:"text", label:'Email'

这里有一个简短的Webix表单,我试图突出显示值已更改的字段,但我一直坚持这样做

这是我的密码:

    webix.ui({
      view:"form",   
      width: 250,
      elements: [  
        { view:"text", label:'Phone', labelPosition: "top", name:"phone", value: "" },   
        { view:"text", label:'Email', labelPosition: "top", name:"email", value:"" },
      ],
        on:{
          onChange: function(newv, oldv){           
            webix.html.addCss(this.getNode(), "new_v");         
          }
        }   
    });
片段:


如您所见,
onChange
事件会影响每个字段,无论其中哪个字段有新值。有没有办法解决这个问题?

将事件添加到每个文本中,而不是表单中

webix.ui({
  view:"form",   
  width: 250,
  elements: [  
    { view:"text", label:'Phone', labelPosition: "top", name:"phone", value: "",
      on:
      {
          onChange: function(newv, oldv){           
          webix.html.addCss(this.getNode(), "new_v");         
        }
      }
    },   
    { view:"text", label:'Email', labelPosition: "top", name:"email", value:"" ,
      on:
      {
          onChange: function(newv, oldv){           
          webix.html.addCss(this.getNode(), "new_v");         
        }
      }
    },
  ]   
});

您可以使用
this.$eventSource

  onChange: function(newv, oldv){           
    var source = this.$eventSource;
    webix.html.addCss(source.getNode(), "new_v");           
  }

ValVert使用单个事件处理程序的想法很好,但不需要在每个视图中重复相同的事件处理代码。您可以使用表单的属性定义一次
onChange
处理程序。这是你的例子。在表单中键入stuff,然后按Enter键

webix.ui({
视图:“表单”,
宽度:250,
元素配置:{
标签位置:'顶部',
关于:{
onChange:函数(newv、oldv){
webix.html.addCss(this.getNode(),'new_v');
}
}
},
要素:[
{视图:“文本”,标签:“电话”,名称:“电话”},
{视图:“文本”,标签:“电子邮件”,名称:“电子邮件”},
],
});
。新的\u v输入{
背景颜色:浅黄色;
}
您只能使用定义一次onChange。