使用ajax进行jQuery验证无法正常工作

时间:2014-05-04 08:46:35

标签: javascript php jquery

在我的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;
}

1 个答案:

答案 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;
}