【发布时间】:2011-12-27 19:51:18
【问题描述】:
我有一个相同形式的 ajax 和完整请求。鼠标单击会在输入字段中触发 ajax,如果我在鼠标单击后立即在同一输入字段上按 enter,则会弹出一个令人讨厌的错误,如下所示。
“Http 传输返回 0 状态码。这通常是混合 ajax 和完整请求的结果。出于性能和数据完整性的原因,这通常是不希望的。”
在我的例子中,输入字段是一个使用 ajax 的单选按钮。按 enter 会导致完整的请求。 我使用了具有 event.stopPropagation() 的 BalusC 的 Javascript 函数,它对我有用,它用于文本输入字段。它也适用于下拉列表。 但是相同的 event.stopPropagation() 不适用于单选按钮。 您可以查看BalusC's answer 以供参考。
下面是我的一段代码,它似乎不起作用
<h:form id=blah...... onkeypress="enterToChange(event)">
....
</h:form>
Javascript 函数
function enterToChange(event){
if (event.keyCode==13 && event.target.id.match('radiobutton_id'){
event.stopPropagation(); // Don't bubble up.
event.preventDefault(); // Prevent default behaviour (submitting the form).
event.target.onchange(); // Trigger onchange where key was actually pressed.
}
}
我使用firebug看到if子句中的语句被执行了,但是由于某种原因仍然弹出错误并且立即渲染了整个页面。无论如何,我都需要避免错误。
非常感谢任何答案。 谢谢
【问题讨论】:
-
它对我有用。也许您在
<h:select(One|Many)Radio>组件上有一个onchange="submit()"?请展示你的观点。 -
问题已解决。按下 enter 正在调用 submit() 并且提交按钮没有 onclick。因此添加了 Javascript 函数以返回 false。感谢代码 BalusC
-
将此作为答案发布并接受。这样做完全没问题。
标签: javascript ajax jsf