Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当JSF生成HTML代码时,textarea的onPaste属性在哪里?_Html_Jsf 2 - Fatal编程技术网

当JSF生成HTML代码时,textarea的onPaste属性在哪里?

当JSF生成HTML代码时,textarea的onPaste属性在哪里?,html,jsf-2,Html,Jsf 2,我把它放在JSF页面中 <textarea id="textarea" rows="4" cols="50" onKeyPress="validate(event)" onPaste="validatepaste(event)"></textarea> 由于JSF只不过是一个HTML代码生成器,所以我无法理解它对onPaste属性的

我把它放在JSF页面中

<textarea id="textarea" rows="4" cols="50"
                    onKeyPress="validate(event)" onPaste="validatepaste(event)"></textarea>
由于JSF只不过是一个HTML代码生成器,所以我无法理解它对onPaste属性的作用以及为什么不支持它

其次。如何在此html
textarea
上实现值绑定

编辑: 因为onkeyup是受支持的,并且是标准化的 使用
时,为什么onkeyup功能会中断

我无法实现与html文本区域字段相同的功能

以下功能可防止用户通过键盘输入或复制粘贴手动输入时,字母文字被替换为“”。 以下是片段:

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,如下所示。这是


同样的功能是无法实现的

<h:inputTextarea value="#{myBean.myValue}" id="compTextArea" 
onkeyup="validate(event)"></hinputTextarea>

并替换此行
var phn=document.getElementById('textarea')
document.getElementById('compTextArea')

为什么这看起来很奇怪

<textarea ... onKeyPress="..." onPaste="...">
其次,
onpaste
属性不属于任何标准规范的一部分。另见。JSF并不是为了产生非标准兼容代码而设计的,因此它不能作为标准组件的属性使用(然而,一旦它成为DOM标准的一部分,它可能会出现在未来的JSF版本中)

但是,您仍然可以使用新的JSF 2.2“HTML5友好标记”功能实现它:


...
请注意,由于
onpaste
不是任何当前标准的一部分,因此其功能取决于所使用的webbrowser品牌/版本。您的Chrome版本显然不支持它,因此它在DOM检查器中不可见(但在原始HTML源代码中仍然可见,您可以通过右键单击、查看源代码或按Ctrl+U键看到)

另见:

非常感谢您的回答。我比你高。但我发现onkeyup事件有些奇怪。请参阅edited partment.JavaScript,因为它是一种客户端语言,与服务器端的JSF源代码不直接兼容。JavaScript与JSF生成的HTML输出一起工作,就像在客户端一样。
document.getElementById('textarea')不返回HTML DOM树中的现有元素。您应该在JS控制台中看到一个错误。检查生成的HTML输出中的实际元素ID。这是另一个问题。另请参见a.o.特别检查
建议,这样您就根本不需要
getElementById()
。您的技能确实令人惊叹。相信我,我已经浏览了网络上关于你生活的每一个材料。你所遭受的痛苦和ANSI DOS批处理程序选择DOS游戏…我享受一切,但有一件事让我时常感到不安,那就是你对雅典人的信仰。每次我看到你的名字在网上闪现时,我都感到很难过。不客气。我确实只相信经验和事实。这也是为什么我的答案如此好的原因(因为它们是基于它们的)。然而,我完全尊重其他宗教。人们只需要有一个社区来消耗能量。
<h:inputTextarea value="#{myBean.myValue}" id="compTextArea" 
onkeyup="validate(event)"></hinputTextarea>
<textarea ... onKeyPress="..." onPaste="...">
<textarea ... onkeypress="..." onpaste="...">
<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputTextarea ... a:onpaste="..." />