在 InputText 中添加或删除可见字符后触发 valueChange 事件
Trigger valueChange event after a visible character is added or removed in InputText
我需要一个 valueChange
事件,每次添加或删除可见字符时都会触发该事件。
我有 2 个输入文本字段,其中一个是只读的,还有一个命令按钮。
<div>
<p:inputText>
<p:ajax id="encodedString" event="valueChange"/>
</p:inputText>
<p:commandButton action="#{bean.foo}" update="output"/>
<p:inputText id="output" readonly="true">
</p:inputText>
</div>
现在,用户在第一个字段中输入一些编码字符串并按下按钮,然后按钮解码字符串并在只读输入字段中以人类可读的形式呈现。现在,每当用户操作原始字符串时,都应重置输出,因为它不再代表原始编码字符串。
遗憾的是,valueChange
事件仅在输入字段失去焦点时触发。我试过 keypress
事件,但它也会在按下箭头键等按钮时触发。
JavaScript 对我来说是可行的,但如果可能应该省略。
每当 actual 输入发生变化时,触发 valueChange
事件(或类似事件)的最佳方法是什么? IE。添加或删除可见字符时。
您必须使用的输入文本不支持值更改事件
按键或模糊
<p:inputText>
<p:ajax id="encodedString" event="keyup"/>
</p:inputText>
您基本上需要 HTML DOM input
event. This relatively new event is unfortunately not supported in <p:ajax>
of <p:inputText>
because the oninput
attribute is not supported <p:inputText>
(还没有?)。
但是,您可以使用 JSF 2.2's passthrough attributes feature 强制 JSF 呈现 oninput
属性,而您又会显式触发默认的 onchange()
函数。
<... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
<p:inputText value="#{bean.value}" a:oninput="onchange()">
<p:ajax listener="#{bean.listener}" />
</p:inputText>
没错,这涉及到 JavaScript,但实际上只是一小部分。
请注意,我从 <p:ajax>
中删除了 event="valueChange"
,因为那已经是 the default one。
我需要一个 valueChange
事件,每次添加或删除可见字符时都会触发该事件。
我有 2 个输入文本字段,其中一个是只读的,还有一个命令按钮。
<div>
<p:inputText>
<p:ajax id="encodedString" event="valueChange"/>
</p:inputText>
<p:commandButton action="#{bean.foo}" update="output"/>
<p:inputText id="output" readonly="true">
</p:inputText>
</div>
现在,用户在第一个字段中输入一些编码字符串并按下按钮,然后按钮解码字符串并在只读输入字段中以人类可读的形式呈现。现在,每当用户操作原始字符串时,都应重置输出,因为它不再代表原始编码字符串。
遗憾的是,valueChange
事件仅在输入字段失去焦点时触发。我试过 keypress
事件,但它也会在按下箭头键等按钮时触发。
JavaScript 对我来说是可行的,但如果可能应该省略。
每当 actual 输入发生变化时,触发 valueChange
事件(或类似事件)的最佳方法是什么? IE。添加或删除可见字符时。
您必须使用的输入文本不支持值更改事件 按键或模糊
<p:inputText>
<p:ajax id="encodedString" event="keyup"/>
</p:inputText>
您基本上需要 HTML DOM input
event. This relatively new event is unfortunately not supported in <p:ajax>
of <p:inputText>
because the oninput
attribute is not supported <p:inputText>
(还没有?)。
但是,您可以使用 JSF 2.2's passthrough attributes feature 强制 JSF 呈现 oninput
属性,而您又会显式触发默认的 onchange()
函数。
<... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
<p:inputText value="#{bean.value}" a:oninput="onchange()">
<p:ajax listener="#{bean.listener}" />
</p:inputText>
没错,这涉及到 JavaScript,但实际上只是一小部分。
请注意,我从 <p:ajax>
中删除了 event="valueChange"
,因为那已经是 the default one。