如何以编程方式显示HTML5客户端表单验证错误气泡?

时间:2013-09-18 21:29:44

标签: html5 validation

我正在尝试使用HTML5客户端验证(即在表单内),但无法看到如何以编程方式显示验证错误气泡。

enter image description here

请考虑以下事项:

<form id="myForm">
    <input type="text" id="number" min="1" max="10" step="3" required>
</form>

如果存在规范submit按钮(即<input type="submit">),并且存在验证错误,则用户代理将暂停向用户显示提交和显示UI:

enter image description here

但是,如果不是使用submit输入,the user is clicking an anchor that executes javascript(即ASP.net Webforms):

<a href='javascript:SaveChanges()'>Save Quantity</a>

<script>
   function SaveChanges()
   {
      var form = document.getElementById('myForm');
      if (form === null) return;

      if (!form.checkValidity())
      {
         //We reach here, but no UI is displayed
         return;
      }
      form.submit();       
</script>

问题在于,而

form.checkValidity();

检查表单的有效性(如果它无效则返回false),它不会触发UI显示。

现在我们有了问题。通过

提交
  • <input type="submit">有效(停止并显示用户界面)
  • <button type="submit>有效(停止并显示用户界面)
  • form.submit不起作用(不停止;不显示用户界面)
  • form.checkValidity()不起作用(不显示用户界面)
  

如何以编程方式显示HTML5客户端表单验证错误气泡?

jsFiddle for all of the above

另见

2 个答案:

答案 0 :(得分:3)

这可能不是最干净的方式,但我添加了一个隐藏的提交按钮,并以编程方式触发其上的点击事件。

答案 1 :(得分:1)

我用这种方式更新了the jsfiddle

使用css类添加新的提交按钮#fakeButton:

.fakeButton{
    display:none;
}

添加一个通过javascript函数触发它的新链接:

function DoFakeButtonClick()
{
    var button = $('#fakeButton');
    if (button === null) 
       return;

    button.click();
}

它工作得很好,我认为它是目前以编程方式执行此操作的唯一方法