【问题标题】:JavaFX WebView: how to check if form is valid?JavaFX WebView:如何检查表单是否有效?
【发布时间】:2020-04-04 01:17:48
【问题描述】:

有没有办法判断表单在 Java 中是否有效?

基本上,如果所有输入字段约束都满足则返回 true 否则返回 false 的方法。

奇怪的是,org.w3c.dom.html.HTMLFormElement 实际上并没有 checkValidity() 方法。

编辑:

更奇怪的是,com.sun.webkit.dom.HTMLFormElementImpl 的实现确实支持checkValidity() 方法。不幸的是,包com.sun.webkit 无法直接访问,因此该方法不可用。

【问题讨论】:

  • 据我所知,HTML 不做验证。验证由 JavaScript 完成和/或在表单操作 URL 的服务器上完成。
  • @VGR 你可以谷歌“html5 表单验证”来了解更多。

标签: java html validation javafx webview


【解决方案1】:

像 HTMLFormElement 这样的 DOM 对象只是模型结构。它们无法执行 JavaScript。

但是,WebEngine 本身确实有一个 JavaScript 解释器,您可以使用 executeScript 方法调用它:

boolean valid = (Boolean) webView.getEngine().executeScript(
    "document.forms[0].checkValidity();");

checkValidity() 方法记录在 herehere 中。

【讨论】:

  • 你怎么知道第一个表单 (forms[0]) 是提交的?
  • 我不知道。那只是为了我的例子。有很多方法可以在 HTML 文档中定位特定的表单元素。最可靠的方法是在 HTML 中给表单元素一个id 属性,这样你就可以使用document.getElementById 来访问它。
【解决方案2】:

将表单转换为 JSObject

大多数 HTML Java 元素,包括 HTMLFormElement,都可以直接转换为 JavaScript 对象 JSObject。然后验证表单就很简单了。

例子:

JSObject jsObject = (JSObject) form;
boolean valid = (boolean) jsObject.call("checkValidity");

【讨论】:

  • 这是验证检查吗,html5验证检查演示在:html5 form validation(特别是html5约束验证API的checkValidity()方法)?
  • @jewelsea 是的。它将考虑 HTML 属性,例如具有required 标记的<input>type="number"
猜你喜欢
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
相关资源
最近更新 更多