[英]sap.m.Input change event is triggered when clicking on CheckBox
我的页面中有两个控件,即sap.m.Input和sap.m.CheckBox 。 如果输入文本与正则表达式不匹配,则输入字段上会附加一个change事件 ,该事件 会显示错误栏 。 单击输入字段的焦点时触发此更改事件。 单击复选框将隐藏此输入并显示第三个控件 。 现在,如果我在输入字段中输入与正则表达式不匹配的内容,然后单击复选框,它将触发Input的changeEvent甚至没有选中该复选框。 我尝试了很多操作,例如检查是否在复选框中是否选中了更改事件,在复选框上附加了单击事件,但没有解决方法。 请帮助我,以便如果当前焦点位于输入字段上,那么我将能够确定单击复选框
这是jsbin的示例。 如果输入文本包含@并且触发了change事件,则会引发错误。
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为focus
尝试以下代码。
this.getView().byId("input").addEventDelegate({
onfocusout: function() {
console.log("focus lost !!");
}
}
对于enter key
使用以下代码
.addEventDelegate({
onkeypress: function(e) {
if (e.which === 13) {
do your stuff;
}
}
})
一旦焦点消失,它将触发onfocusout
提供的onfocusout
,而在焦点对onfocusout
,如果按Enter键将触发onkeypress
事件中提供的功能。 您也可以将其合并为一个。
addEventDelegate({
onkeypress: function(e) {
console.log("Enter pressed fouse out", e.which);
},
onfocusout: function() {
do your stuff!
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.