Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Javascript 使用调用函数JSF获取密钥代码_Javascript_Jsf_Primefaces - Fatal编程技术网

Javascript 使用调用函数JSF获取密钥代码

Javascript 使用调用函数JSF获取密钥代码,javascript,jsf,primefaces,Javascript,Jsf,Primefaces,当使用JSFinputText时,通过ajax事件keydown调用javascript函数,但不获取keu的代码事件 <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

当使用JSF
inputText
时,通过ajax事件keydown调用javascript函数,但不获取keu的代码事件

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <title>Start Page</title>
    <script>
        i = 0;
        $(document).ready(function (e) {
            $("#form\\:inp1").keydown(function (e) {
                $("#form\\:span1").text(e.type + ": " + e.which);
            });
        });
        function keyUp1(e, extraval)
        {
            $("#form\\:span2").text(e.type + ": " + e.which);
            window.alert("call it" + extraval);
        }
    </script>
</h:head>
<body>
    <h:form id="form">
        JQuery:
        <p:inputText id="inp1" />
        <p:outputLabel id="span1" value="Test This"/>
        <br/>
        <br/>
        <h:outputText value="JSF Ajax: " />
        <p:inputText id="counter" value="#{listenerView.text}">
            <f:ajax event="keydown" onevent="function(data) {keyUp1(data,'  Test it')};"/>
        </p:inputText>
        <h:outputText id="out" value="#{listenerView.text}"/> 
        <p:outputLabel id="span2" value="Test This"/>
    </h:form>
</body>

起始页
i=0;
$(文档).ready(函数(e){
$(“#form\\\:inp1”).keydown(函数(e){
$(“\\\:span1”).text(e.type+”:“+e.which);
});
});
功能键UP1(e,外部值)
{
$(“\\\:span2”).text(e.type+”:“+e.which);
window.alert(“调用它”+extral);
}
JQuery:



第一个
inputText
使用第11行中的Jquery和javascript函数,但第二个
inputText
不使用JSF ajax

您收到的数据是事件-它包含event.type、event.status、event.source。这就是为什么它不适合你

您可以捕获事件keydown,但在源代码中,您将只找到HTMLInputelement(调用事件的inputText元素),而不是键

如果您确实需要知道按下了什么键,那么使用jQuery版本;如果您需要将请求发布到后端并获得一些字段更新,那么使用jsf ajax。顺便说一句,您正在将primefaces组件与jsf ajax混合使用——不要这样做(这不一样)——如果需要,可以使用primefaces ajax

工作版本(仅不同)

功能键up1(e)
{
如果(如状态!=“完成”){
log(e.type+“:“+Object.keys(e));
控制台日志(“类型:+e.type”);
控制台日志(“状态:+e.status”);
console.log(“源:+e.source”);
}
}

我认为这只是名称参数,与我们所说的没有什么不同。有没有办法从outputText获取keycode?我没有注意到,您说如果将参数从
数据更改为
事件
问题解决了吗?
   function keyUp1(e)
   {
       if (e.status !== "complete") {
           console.log(e.type + ": " + Object.keys(e));
           console.log("type: " + e.type);
           console.log("status: " + e.status);
           console.log("source: " + e.source);
       }
   }

   <f:ajax event="keydown" onevent="keyUp1"/>