在我的PHP代码中,我使用一个要求提供网址的表单。
我的问题是,检查输入是否为空的第一个验证工作正常。
第二个验证' URL是有效/可访问的,如果URL无效,会给我提醒。但它也提交了表格。我找不到问题。谢谢你的帮助。
带输入的表单和onSubmit ="返回validate();"
<input class="form-control url" id="url" name="formVar" type="text">
<span class="input-group-btn">
<button class="btn btn-default" type="submit">
check website
</button>
</span>
验证
function validate() {
var f = document.seocheck;
var valid = true;
alert(f.url.value);
if (f.url.value == "") {
alert('Pls insert an url');
valid = false;
}
if (f.url.value != "") {
jQuery.ajax({
url : jQuery(f.url.value).val(),
success : function(data, textStatus) {
valid = true;
},
error : function(jqXHR, textStatus, errorThrown) {
alert('Pls check the url');
valid = false;
}
});
}
return valid;
}
答案 0 :(得分:0)
您的有效状态为真。
因为ajax是异步的,所以它不会等待你的jquery ajax返回一个结果,所以无论如何返回true都是有效的设置。
使用ajax没有简单的方法让验证函数返回true或false。 我建议你更改你的代码,如果有效,请调用一个将提交的函数。
根据您的jquery版本,您可以将async更改为false,但在新版本的jquery(从1.8开始)中不推荐使用此功能,不推荐使用。
尝试这样的事情:
function validate() {
var f = document.seocheck;
alert(f.url.value);
if (f.url.value == "") {
alert('Pls insert an url');
return false;
}
if (f.url.value != "") {
jQuery.ajax({
url : jQuery(f.url.value).val(),
success : function(data, textStatus) {
$('.btn btn-default').trigger('submit', [true]);
},
error : function(jqXHR, textStatus, errorThrown) {
alert('Pls check the url');
return false;
}
});
}
return false;
}