使用javascript提交时保持浏览器HTML表单验证?

时间:2016-09-01 10:12:01

标签: javascript html

如果通过Javascript提交,是否可以保留默认的HTML验证?

我的意思是,如果我使用这个JS方法提交表单:

document.getElementById("mc-embedded-subscribe-form").submit();

如何保留浏览器抛出的defualt错误消息?

enter image description here

我想到的一个解决方法就是使用它:

<form onSubmit="return somefunction()">

但是因为API在闭包函数中返回成功,所以我不能使用这个方法。

3 个答案:

答案 0 :(得分:2)

根据我对你的问题的理解,html验证不足以停止提交,你必须在提交之前在javascript中验证所需的输入。

例如

if (!empty(username)) {
    document.getElementById("mc-embedded-subscribe-form").submit();
}

答案 1 :(得分:2)

HTML5还指定了一个JS API,您可以使用它与表单/元素进行交互以验证其验证状态:https://www.w3.org/TR/html5/forms.html#the-constraint-validation-api

因此,实现此目标的最简单方法是调用表单的checkValidity方法,并仅在返回true时提交。

这样的事情:

function submitIfValid() {
  var form = document.getElementById("mc-embedded-subscribe-form");
  if(form.checkValidity()) {
    form.submit();
  }
  else {
    //
  }
}

然后你想在触发表单提交时调用该函数。

答案 2 :(得分:0)

您无需使用abc@xyz:~/test10$ npm install npm ERR! addLocal Could not install /home/abc/test10/deps/phoenix npm ERR! addLocal Could not install /home/abc/test10/deps/phoenix_html npm ERR! Linux 3.16.0-4-amd64 npm ERR! argv "/usr/bin/nodejs" "/home/abc/.npm-global/bin/npm" "install" npm ERR! node v6.5.0 npm ERR! npm v3.10.6 npm ERR! path /home/abc/test10/deps/phoenix npm ERR! code ENOENT npm ERR! errno -2 npm ERR! syscall open npm ERR! enoent ENOENT: no such file or directory, open '/home/abc/test10/deps/phoenix' npm ERR! enoent ENOENT: no such file or directory, open '/home/abc/test10/deps/phoenix' npm ERR! enoent This is most likely not a problem with npm itself npm ERR! enoent and is related to npm not being able to find a file. npm ERR! enoent npm ERR! Please include the following file with any support request: npm ERR! /home/abc/test10/npm-debug.log abc@xyz:~/test10$ 。正确执行(form.submit()),或在提交按钮上使用onsubmit

正确地做......

我无法想出自动提交可见表单的充分理由。要在没有用户互动的情况下提交数据,请使用XMLHttpRequestWebSockets

表单是通过用户交互提交的(例如,按下其提交按钮),因此无需使用JavaScript来提交表单。通过在click()事件处理程序中返回false,您更有可能需要使用JavaScript prevent a form submission

...或使用onsubmit

以编程方式调用HTML5验证(以及附加到表单的任何JavaScript click()事件处理程序),您可以调用属于的提交按钮的onsubmit函数形式。

如果表单没有提交按钮,您可以创建一个临时表单:

click()

具有多个提交按钮的表单应各自具有var form = document.getElementById("mc-embedded-subscribe-form"); var button = document.createElement('input'); button.type = 'submit'; button.style.display = 'none'; form.appendChild(button); button.click(); 属性,以便服务器可以检测用户单击的按钮。您可以点击&#39;这些按钮使用name