我有一个登录视图。当我按下登录按钮时,我会调用handleFooterBarButtonPress
功能。在密码字段中按Enter键时,如何管理Enter键动作来调用相同的功能?
<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:l="sap.ui.layout" xmlns:f="sap.ui.layout.form"
controllerName="view.login" xmlns:html="http://www.w3.org/1999/xhtml" >
<Page title="WEBAPP">
<content>
<FlexBox
alignItems="Center"
justifyContent="Center">
<items>
<Image src="general/img/logo.png" width="{/widthL}"/>
</items>
</FlexBox>
<FlexBox
alignItems="Center"
justifyContent="Center">
<items>
<l:Grid
defaultSpan="L12 M12 S12"
width="auto">
<l:content>
<f:Form id="loginForm"
minWidth="1024"
maxContainerCols="2"
editable="true">
<f:title>
<core:Title text="" />
</f:title>
<f:layout>
<f:ResponsiveGridLayout
labelSpanL="3"
labelSpanM="3"
emptySpanL="4"
emptySpanM="4"
columnsL="1"
columnsM="1" />
</f:layout>
<f:formContainers>
<f:FormContainer>
<f:formElements>
<f:FormElement label="Username">
<f:fields>
<Input id="id_inputUsername" />
</f:fields>
</f:FormElement>
<f:FormElement label="Password">
<f:fields>
<Input id="id_inputPassword" type="Password" />
</f:fields>
</f:FormElement>
</f:formElements>
</f:FormContainer>
</f:formContainers>
</f:Form>
</l:content>
</l:Grid>
</items>
</FlexBox>
</content>
<footer>
<Bar>
<contentRight>
<Button id="idButtonLogin" text="Login" type="Emphasized" visible="true" press="handleFooterBarButtonPress" icon="sap-icon://accept" />
</contentRight>
</Bar>
</footer>
</Page>
</core:View>
在sap.m.Input
控件上,输入会引发change
事件。因此,您可以为此设置一个处理程序,该处理程序可以触发sap.m.Button
控件上的press event * 。
视图:
<Input id="id_inputPassword"
type="Password"
change="onPasswordChange" />
...
<Button id="idButtonLogin"
text="Login"
type="Emphasized"
visible="true"
press="handleFooterBarButtonPress"
icon="sap-icon://accept" />
控制器:
onPasswordChange : function(oEvent) {
this.getView().byId("idButtonLogin").firePress();
},
handleFooterBarButtonPress : function(oEvent) {
jQuery.sap.require("sap.m.MessageToast");
sap.m.MessageToast.show("Login!");
}
警告:firePress受保护,因此您可能需要做一些不同的事情
它可以工作,但是我有以下相同的问题,如下所述:当我按Enter键时,我会重复执行代码!
嗨,qmacro,当输入失去焦点时,您的代码将触发Login事件处理程序。
抱歉,qmacro。这行得通!;)但是,如果我使用“ attachBrowserEvent”,该功能关联两次起火了吗?谢谢!
艾伦,这是事实,但在这种情况下也许还想要什么。
qmacro,它将导致意外的登录问题。请看我的答案。