Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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 单击复选框时触发sap.m.Input更改事件_Javascript_Html_Sapui5 - Fatal编程技术网

Javascript 单击复选框时触发sap.m.Input更改事件

Javascript 单击复选框时触发sap.m.Input更改事件,javascript,html,sapui5,Javascript,Html,Sapui5,我的页面中有两个控件,即sap.m.Input和sap.m.CheckBox。有一个更改事件附加到输入字段,若输入文本和正则表达式不匹配,它会给出一个错误条。此更改事件在单击输入字段的焦点外时触发。单击复选框将隐藏此输入并显示第三个控件。现在,如果我在输入字段中输入与正则表达式不匹配的内容,然后单击复选框,它将触发输入的changeEvent,甚至不会选中复选框。我尝试了很多事情,比如在变更事件中检查复选框是否被勾选,在复选框上附加一个点击事件,但没有解决方案。 请帮助我,以便我能够确定当前焦点

我的页面中有两个控件,即sap.m.Input和sap.m.CheckBox。有一个更改事件附加到输入字段,若输入文本和正则表达式不匹配,它会给出一个错误条。此更改事件在单击输入字段的焦点外时触发。单击复选框将隐藏此输入并显示第三个控件。现在,如果我在输入字段中输入与正则表达式不匹配的内容,然后单击复选框,它将触发输入的changeEvent,甚至不会选中复选框。我尝试了很多事情,比如在变更事件中检查复选框是否被勾选,在复选框上附加一个点击事件,但没有解决方案。 请帮助我,以便我能够确定当前焦点是否在输入字段上的单击复选框

下面是一个例子。如果输入文本包含@并且触发了更改事件,则会在此处引发错误

var textInput = new sap.m.Text({text:"Area:"})
var inputField =new sap.m.Input("inptId",{
  change:function(oEvent){

    sap.ui.getCore().byId("barId").setVisible(oEvent.getParameters().value.includes("@"));

  }
});

var select  = new sap.m.Select("select",
                               {visible:false,
                                items:[new sap.ui.core.Item({text:"India"}),
                                      new sap.ui.core.Item({text:"US"}),
                                       new sap.ui.core.Item({text:"UK"})
                                      ]
                               })
var hBox = new sap.m.HBox({items:[textInput,inputField,select]})

  var bar = new sap.m.Bar("barId",{
    visible:false,
    contentMiddle:new sap.m.Text({text:"Error"})
  });

  var chkBox = new sap.m.CheckBox("chkBxId",{
  text:"Select from dropdown",
  select:function(oEvent){        
    var selected = oEvent.getParameters().selected;
    sap.ui.getCore().byId("inptId").setVisible(!selected);
     sap.ui.getCore().byId("select").setVisible(selected);
    sap.ui.getCore().byId("barId").setVisible(false);
  }
});
var vBox = new sap.m.VBox({
  items:[bar,hBox,chkBox]
});
在本例中,它有时会发生,但并不总是发生,但在我的项目中,它总是发生,因为在变更事件中有许多验证正在发生。

@Ashish要获得焦点,请尝试以下代码

this.getView().byId("input").addEventDelegate({
  onfocusout: function() {
    console.log("focus lost !!");
  }
}
对于回车键,请使用以下代码

.addEventDelegate({
  onkeypress: function(e) {
    if (e.which === 13) {
      do your stuff;
    }
  }
})  
一旦调焦结束,它将触发onfocusout中提供的功能,而在调焦时,如果按下enter键,它将触发onkeypress事件中提供的功能。 您还可以将其合并为一个

addEventDelegate({
  onkeypress: function(e) {
    console.log("Enter pressed fouse out", e.which);
  },
  onfocusout: function() {
    do your stuff!
  }
})

您是否尝试过使用的livechange事件input@suryabhanmourya是的,我试过,但要求在按下enter键或焦点移出时验证文本,而不是在实时更改上