【发布时间】:2015-07-25 09:36:38
【问题描述】:
我在 JSF 页面中有这个,
<textarea id="textarea" rows="4" cols="50"
onKeyPress="validate(event)" onPaste="validatepaste(event)"></textarea>
我不使用<h:inputTextarea> 的原因是因为这个JSF 标记似乎缺少onPaste 属性。
当我在谷歌浏览器中调试我的代码时,我惊讶地发现onPaste 属性不存在,
呈现的html代码是,
<textarea id="j_id_2:textarea" name="j_id_2:textarea"
onkeypress="return validate(event)" cols="15" rows="5"></textarea>
由于 JSF 只是一个 HTML 代码生成器,我无法理解它对 onPaste 属性的作用以及为什么不支持它?
其次。我将如何在这个 html textarea 上实现值绑定?
编辑:
由于支持 onkeyup 并且是标准化的
为什么在使用<hinputTextarea> 时onkeyup 功能会中断?
我无法实现与 html textarea 字段相同的功能。
一旦用户通过键盘输入或复制粘贴手动输入,以下功能可防止字母文本被“”替换。 这是sn-p:
function validate(e) {
console.log(e)
var invalidcharacters = /[^0-9]/gi
var phn = document.getElementById('textarea');
if (invalidcharacters.test(phn.value)) {
//e.value = e.value.replace(invalidcharacters, "");
console.log("REPLACING");
newstring = phn.value.replace(invalidcharacters, "");
phn.value = newstring
}
}
它适用于普通 html,如下所示。这里jsfiddle
<textarea id="textarea" rows="4" cols="50" onkeyup="validate(event)"></textarea>
使用
无法实现相同的功能<h:inputTextarea value="#{myBean.myValue}" id="compTextArea"
onkeyup="validate(event)"></hinputTextarea>
并在js文件方法中将var phn = document.getElementById('textarea');这一行替换为document.getElementById('compTextArea');。
这看起来很奇怪的任何原因?
【问题讨论】: