Where does onPaste attribute of a textarea goes when JSF generates HTML code?
我在JSF页面中有这个
1 2 | <textarea id="textarea" rows="4" cols="50" onKeyPress="validate(event)" onPaste="validatepaste(event)"></textarea> |
我不使用
当我在Google Chrome浏览器中调试代码时,我惊讶地发现
呈现的html代码是,
1 2 | <textarea id="j_id_2:textarea" name="j_id_2:textarea" onkeypress="return validate(event)" cols="15" rows="5"></textarea> |
由于JSF只是HTML代码生成器,因此我无法理解它对onPaste属性的作用,为什么不支持它?
其次。如何在此html
编辑:
由于onkeyup受支持且已标准化
为什么使用
我无法实现与html textarea字段相同的功能。
下列功能可防止用户通过键盘输入或复制粘贴手动输入时,将字母缩写文本替换为""。
这是代码段:
1 2 3 4 5 6 7 8 9 10 11 | 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
1 | <textarea id="textarea" rows="4" cols="50" onkeyup="validate(event)"></textarea> |
不能实现相同的功能
1 2 | <h:inputTextarea value="#{myBean.myValue}" id="compTextArea" onkeyup="validate(event)"></hinputTextarea> |
并将js文件方法中的
为什么这看起来很奇怪?
1 | <textarea ... onKeyPress="..." onPaste="..."> |
首先,JSF使用Facelets作为视图技术。 Facelets使用XHTML + XML生成HTML。驼峰式属性在XHTML中无效。分别是
1 | <textarea ... onKeyPress="..." onPaste="..."> |
其次,
但是,无论如何,您都可以使用新的JSF 2.2" HTML5友好标记"功能来实现它:传递属性。
1 2 3 | <html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough"> ... <h:inputTextarea ... a:onpaste="..." /> |
请注意,由于
也可以看看:
- JSF不呈现自定义HTML标记属性