将“_X”附加到输入值并将其提高

时间:2014-08-06 17:43:09

标签: jquery

我需要检查输入字段的值是否真的唯一。因此,将通过AJAX检查输入值。如果result = 1 - >一切都很好(=唯一值)。 如果result = 0,则表示DB中已存在相同的值,因此必须将输入值修改为“value_X”。 X是一个数字,应该被提出。所以我需要检查修改后的值是否也是唯一的。如果不是这种情况,则x将被引发,直到它是唯一值(result = 1)。

var slug = $('#slug').val();
check_slug(slug);

function check_slug(slug) { 
    $.ajax({
        url: "script.php",
        type: "GET",
        data: { 'slug': slug },
        dataType: "json"
    })
    .done(function( json ) {
        if (json.result==1) {
            // slug is ok
        }
        else {
            // add "_X" and check
        }
    })
    .fail(function( jqxhr, textStatus, error ) {
        var err = textStatus + ", " + error;
        console.warn( "Request Failed: " + err );
    });
}

1 个答案:

答案 0 :(得分:1)

我建议改为使用这个工作服务器端。让你的API弄清楚slug值应该是什么,并返回它!然后AJAX调用只发生一次,你知道slug最终是什么。

但是,如果您坚持在请求之后发送请求,直到您最终找到合适的slug,那么这应该可以解决问题:

var slug = $('#slug').val();
check_slug(0, slug);

function check_slug(count, slug) {
    var numberedSlug = slug;
    if(count > 0) {
        numberedSlug = slug + "_" + count;
    }

    $.ajax({
        url: "script.php",
        type: "GET",
        data: { 'slug': numberedSlug },
        dataType: "json"
    })
    .done(function( json ) {
        if (json.result == 1) {
            // slug is ok
            // do what you do with ok slugs
        } else {
            check_slug(count + 1, slug);
        }
    })
    .fail(function( jqxhr, textStatus, error ) {
        var err = textStatus + ", " + error;
        console.warn( "Request Failed: " + err );
    });
}

编辑:应该注意的是,#编号为“插头”'是成功后的有效slu ..