javascript - 结合 JS 客户端验证时,不会触发 JSF ajax 请求

标签 javascript ajax validation jsf jsf-2

我正在使用 JSF 2.0 和 primefaces。 我有一个页面,在一个表单中有几个输入,还有一个使用 ajax 将新记录添加到表中的按钮。一切正常。然后我使用 JavaScript 添加了客户端验证。这是命令按钮的代码:

<p:commandButton value="Add" actionListener="#{reqAbsences.addPreLeaveDemand}"
                 onclick="return validateNewAbs()"
                 update="tableForm inputForm errorForm" />

如果验证失败,它会按预期工作,并且不会在表中添加记录。 通过验证时出现问题:添加了记录,但重新加载了页面(ajax 不工作)。如果我删除 onclick="return validateNewAbs()" ajax 再次工作。

知道为什么会这样吗?

最佳答案

您通过立即返回 true 来覆盖默认的 ajax click 事件。而是让它只在 false 时返回。

onclick="if (!validateNewAbs()) return false;"

但是,更好的方法是使用 JSF 内置/自定义验证器在服务器端进行验证。这样您就不需要在两侧重复验证,并且验证仍然可以在禁用 JS 的情况下工作。

关于javascript - 结合 JS 客户端验证时,不会触发 JSF ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416695/

相关文章:

JavaScript 乘法

javascript - 无法在本地主机上查看 html5 Canvas 内容

javascript - FullCalendar Jquery,选择当天内

javascript - 我尝试使用 ajax 部分刷新 html,但它不起作用

javascript - Ajax回调仅适用于jquery表单组列表中的顶部div

javascript - 在 ajax 回调函数的每个循环之后附加输出

java - 如何使用 JTidy 验证 HTML?

jquery - 带有 jQ​​uery 验证的 ASP.Net MVC Ajax 表单

javascript - 如何在 Javascript 中设置 HTML5 必需属性?

javascript - 如何引导导航栏静态固定在滚动条上?