如果验证未通过,如何不提交表单
how don't submit form if validation not passed
我写了一小段代码:
html:
<label for="searchTextField">Please Insert an address:</label>
<br>
<form id = "formId" action="google.com">
<input id="searchTextField" type="text" size="50">
<input type="submit" value="is valid" id="submitId">
<form>
js:
var input = document.getElementById('searchTextField');
var options = {componentRestrictions: {country: 'us'}};
new google.maps.places.Autocomplete(input, options);
$("#formId").submit(function(e){
return editTerminal(e);
});
function editTerminal(id, e) {
function setPosition(){
console.log("logic");
};
return codeEditAddress(setPosition,e);
}
function codeEditAddress( callback, e) {
var address = document.getElementById('searchTextField').value;
var geocoder= new google.maps.Geocoder();
geocoder.geocode({ 'address': address}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//should be submit
alert('good address');
} else {
//should NOT be submit
alert('wrong address');
e.preventDefault();
}
});
}
jsfiddle DEMO
现在我的表单无论如何都提交了。
如果显示 wrong address
消息,我想实现它不提交。
请帮忙修改代码。
而不是调用你的函数
$("#formId").submit(function(e){
return editTerminal(e); });
在提交表单时,您应该将提交输入替换为按钮,并在它的 onclick 事件上启动您的功能。
然后,如果地址有效,请手动提交表格:
$("#formId").submit();
S.P
您的地理编码函数是异步的。您在其中所做的任何操作都不会影响事件处理。
对于提交事件,我总是return false
$("#formId").submit(function(e){
editTerminal(e);
return false;
});
并做一个纯js的表单提交一个好的地址来绕过提交监听:
document.myForm.submit();
我写了一小段代码:
html:
<label for="searchTextField">Please Insert an address:</label>
<br>
<form id = "formId" action="google.com">
<input id="searchTextField" type="text" size="50">
<input type="submit" value="is valid" id="submitId">
<form>
js:
var input = document.getElementById('searchTextField');
var options = {componentRestrictions: {country: 'us'}};
new google.maps.places.Autocomplete(input, options);
$("#formId").submit(function(e){
return editTerminal(e);
});
function editTerminal(id, e) {
function setPosition(){
console.log("logic");
};
return codeEditAddress(setPosition,e);
}
function codeEditAddress( callback, e) {
var address = document.getElementById('searchTextField').value;
var geocoder= new google.maps.Geocoder();
geocoder.geocode({ 'address': address}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//should be submit
alert('good address');
} else {
//should NOT be submit
alert('wrong address');
e.preventDefault();
}
});
}
jsfiddle DEMO
现在我的表单无论如何都提交了。
如果显示 wrong address
消息,我想实现它不提交。
请帮忙修改代码。
而不是调用你的函数
$("#formId").submit(function(e){
return editTerminal(e); });
在提交表单时,您应该将提交输入替换为按钮,并在它的 onclick 事件上启动您的功能。 然后,如果地址有效,请手动提交表格:
$("#formId").submit();
S.P
您的地理编码函数是异步的。您在其中所做的任何操作都不会影响事件处理。
对于提交事件,我总是return false
$("#formId").submit(function(e){
editTerminal(e);
return false;
});
并做一个纯js的表单提交一个好的地址来绕过提交监听:
document.myForm.submit();