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