当JSF生成HTML代码时,Textarea的Onpaste属性在哪里



我在JSF页面中有一个,

<textarea id="textarea" rows="4" cols="50"
                    onKeyPress="validate(event)" onPaste="validatepaste(event)"></textarea>

我不使用<h:inputTextarea>的原因是因为onPaste属性似乎在此JSF标签中缺少。

当我在Google Chrome中调试代码时,我惊讶地发现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得到了支持,并已标准化为什么 onkeyup 使用<hinputTextarea>时功能断开?

我无法实现与 html textarea field 。。

以下功能可防止字母文本被"用户通过键盘输入或复制粘贴手动输入。这是片段:

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文件方法中用document.getElementById('compTextArea');替换此行var phn = document.getElementById('textarea');

任何季节为什么这看起来很奇怪?

<textarea ... onKeyPress="..." onPaste="...">

首先,JSF使用FACELET作为视图技术。Facelets使用XHTML XML生成HTML。基于骆驼的属性在XHTML中无效。分别是onkeypressonpaste。也许您从中获取这些信息的来源将其与" Onpaste"相混淆。DOM事件处理程序。

<textarea ... onkeypress="..." onpaste="...">

第二,onpaste属性是不是任何标准规范的一部分。另请参见MDN上的HTMLElement.onpaste文档。JSF并非旨在生成非标准的代码,因此它不能作为标准<h:inputTextarea>组件的属性(目前 - 它成为DOM标准的一部分)。

但是,您可以使用新的JSF 2.2" HTML5友好标记"来实现它。功能:传递属性。

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputTextarea ... a:onpaste="..." />

请注意,由于onpaste不是当前标准的一部分,因此其功能取决于使用的WebBrowser Make/version所使用的WebBrowser。您的Chrome版本显然不支持它,因此它在其DOM Inspector中是不可见的(但是在RAW HTML源中仍然可见,您可以通过rightClick, view source 或按下 ctrl u )。

另请参见:

  • 自定义HTML标签属性不是由JSF渲染的

最新更新