如果通过Javascript提交,是否可以保留默认的HTML验证?
我的意思是,如果我使用这个JS方法提交表单:
document.getElementById("mc-embedded-subscribe-form").submit();
如何保留浏览器抛出的defualt错误消息?
我想到的一个解决方法就是使用它:
<form onSubmit="return somefunction()">
但是因为API在闭包函数中返回成功,所以我不能使用这个方法。
答案 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
。
我无法想出自动提交可见表单的充分理由。要在没有用户互动的情况下提交数据,请使用XMLHttpRequest或WebSockets。
表单是通过用户交互提交的(例如,按下其提交按钮),因此无需使用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
。