我试图通过onsubmit属性提交表单。但我希望HTML5
验证能够正常工作。
function submitForm() {
if(somecondition){
//used this to submit form without it I was not able to submit the form
$("form#form").submit();
return true;
}
else{
return false;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="search" method="post" id="form" onsubmit="return submitForm()">
<input type="text" pattern="[A-Za-z]" required>
</form>
但即使没有给出任何价值,表格也会提交。一世
输入的pattern属性是regexp,您可以手动提取它
const patternToMatch = $("input[type="text"]).attr("pattern");
然后用以下方法实现:
const regexp = new RegExp(patternToMatch);
最终确保输入尊重它提交
function submitForm() {
if ($("input[type="text"]).val().match(regexp)) {
form.submit();
} else {
// display message
}
}
这是盲目编码,让我知道它是否工作:)
当使用JQuery进行提交时,它不会查看HTML的验证,它会绕过它。但是有一种方法可以做到这一点,如下所示。所以我在这里做的是。首先要保持简单,而不是在加载页面时触发提交,我使用submitForm()函数创建了一个链接。我还创建了一个不可见的提交按钮。然后在submitForm()函数中,您可以找到隐藏按钮并触发单击事件,该事件将触发按钮的提交并验证您的HTML。
这样,您可以使用JQuery触发提交并编写JQuery中所需的任何其他代码。
编辑:更改了片段,以便在验证时仍然使用submit()JQuery函数。
function submitForm(){
// do some stuff
if ($('#form')[0].checkValidity()) {
$('#form').submit();
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="search" method="post" id="form">
<input type="text" id="warning" required>
<a href="javascript: void(0);" onclick="submitForm()">Login</a>
</form>
如果输入与模式不匹配,则以下代码不应调用“submit”
<form action="search" method="post" id="form">
<input type="text" pattern="[A-Za-z]" required title="1 letter only">
</form>
var form = $("#form");
form.on("submit", function(e){
e.preventDefault();
alert('Submitted')
});
在这里工作小提琴:https://jsfiddle.net/lightblue/94wj7cnb/1/
对于模式:
[a-zA-Z]
以小写和大写形式匹配A-Z的一个字母。[a-zA-Z]+
匹配一个或多个字母(一个字)在您的情况下,它只匹配1个字母