Javascript 使用调用函数JSF获取密钥代码
当使用JSFJavascript 使用调用函数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="
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"/>