随着最近对纸张输入的更改和纸张输入装饰器(聚合物 v0.5.1)的引入,我现在在实施输入验证时遇到了麻烦。例如,在最近的更改之前,我构建了一个自定义的“属性编辑器”聚合物元素(即基本上结合了可配置图标、可配置输入控件(类型纸下拉菜单或常规输入)和相关联的元素可选单位值输入控件(类型纸张下拉菜单或纸张输入)),它非常实用。这是一小部分代码,显示了上述自定义元素中的一个模板,当向其提供正则表达式模式时激活该模板。这运作良好:
<template if="{{controlType == 'input' && controlValidPattern != null}}">
<paper-input id="{{controlId}}" value="{{inputValue}}" label="{{controlLabel}}" floatingLabel="{{controlFloatingLabel}}" pattern="{{controlValidPattern}}" error="{{controlErrorMsg}}" required="{{controlInputRequired}}" maxlength="{{controlMaxLength}}">
</paper-input>
</template>
然后我实现了一个inputValueChanged
观察器函数,它反过来触发了一个自定义事件,以便主机/消费元素根据需要进行操作。
最终目标当然是在当前输入无效时显示控件的验证错误消息(这可能在用户键入时“实时”发生,并且可能在控件加载初始输入值时出现),或者甚至更好地防止用户首先输入无效数据。在任何情况下,除非输入有效,否则应防止触发“inputValueChanged”函数,并且在用户离开控件(模糊等)之前不要触发该事件。我一直在尝试使用新版本的纸张元素(参见下面的示例尝试)让它再次工作,但仍然有一些困难。任何人都可以提供一个实现正则表达式模式匹配的示例,并具有上述所需的行为吗?
<template if="{{controlType == 'input' && controlValidPattern != null}}">
<paper-input-decorator label="{{controlLabel}}" floatingLabel="{{controlFloatingLabel}}" error="{{controlErrorMsg}}" isInvalid="{{invalidEntry}}">
<input is="core-input" id="{{controlId}}" value="{{inputValue}}" committedValue="{{committedValue}}" pattern="{{controlValidPattern}}" maxlength="{{controlMaxLength}}" required="{{controlInputRequired}}" size="{{controlWidth}}">
</paper-input-decorator>
</template>
提前感谢您提供的任何建议/示例!