[英]How do I add the click event to the input field?
我想向条目添加一个按钮属性。 例如;
我有一个无法编辑的输入字段:
当我按下键盘按钮时,它变得可编辑:
当用户在不需要不同按钮的情况下单击输入字段时,它必须运行不同的 function。 例如条码扫描仪。 不可编辑的输入能否触发 function? 或者可编辑的输入是否可以触发任何 function? 我该怎么做呢?
在这个应用程序中,条形码事件应该由输入字段触发,而不是按钮。
正如我在评论中提到的,问题中当前方法的用户体验非常值得怀疑:
相反,请考虑通过其值帮助 ( F4 ) 操作在单个输入字段中提供两个选项(手动输入和触发相机扫描):
sap.ui.getCore().attachInit(() => sap.ui.require([ "sap/ui/core/Fragment" ], async (Fragment) => { "use strict"; const control = await Fragment.load({ definition: `<form:SimpleForm xmlns:form="sap.ui.layout.form" xmlns="sap.m" editable="true" layout="ColumnLayout"> <Label text="Barcode Number" /> <Input width="12rem" textAlign="Center" placeholder="XXXXXXXXX" showValueHelp="true" valueHelpIconSrc="sap-icon://bar-code" valueHelpRequest="alert('Scanner triggered:')" /> </form,SimpleForm>`; }). control;placeAt("content"); }));
<script id="sap-ui-bootstrap" src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" data-sap-ui-libs="sap.ui.core,sap.m,sap.ui.layout" data-sap-ui-async="true" data-sap-ui-theme="sap_fiori_3" data-sap-ui-compatversion="edge" data-sap-ui-excludejquerycompat="true" data-sap-ui-xx-waitfortheme="init" ></script> <body id="content" class="sapUiBody"></body>
通过将"sap-icon://bar-code"
分配给 sap.m.Input 中的valueHelpIconSrc
属性(自sap.m.Input
起可用),可以将值帮助图标设置为条形码。
这种方法对用户和开发人员都有好处,因为该行为现在与常见的用户输入场景一致,提高了熟悉度,并且对于开发人员来说,由于定制较少,因此大大降低了维护成本。
如果目标 UI5 版本低于 1.84.0 或条形码为固定长度,则需要使用addEndIcon
方法扩展控件。 我在另一个答案中解释了这一点。 这是一个扩展sap.m.MaskInput
的示例:
如果您的不可编辑input
是不可编辑的,因为它具有disabled
属性,则您不能将鼠标事件附加到它。 (实际上你可以,但它不会触发鼠标事件。)
如果要触发单击事件,可以将事件侦听器添加到父元素,例如下面示例中的div
。
尽管它在没有它的情况下在 Chrome 中工作,但您还需要在input
上将pointer-events
设置为none
,以使点击落到 Firefox 中的父元素。
const parentDiv = document.querySelector("div"); const input = document.querySelector("input"); parentDiv.addEventListener("click", (e) => { input.removeAttribute("disabled"); input.focus(); // or you can open the barcode scanner, etc. });
input { font-size: 2rem; padding: 0.5rem 1rem; } input[disabled] { pointer-events: none; }
<div> <input type="text" value="disabled field" disabled> </div>
如果label
包含以下input
,它也可以与label
使用:
<label>Barkod No:
<input type="text" value="disabled field" disabled>
</label>
试试这个,用你自己的启用 function 替换 displayDate 函数:
document.getElementById("myBtn").addEventListener("click", displayDate);
然后调用 CSS 更改:
input[type="text"]:enabled {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.