1

我正在构建一个“按 SKU 订购”页面,用于检查 SKU 是否存在于数据库中,如果存在,则通过 ajax 显示它们的名称。到目前为止一切顺利,但如果发现错误,我无法禁用提交按钮。

function sku_check(){

    // Definir array de erros e começar incrementação
    var haErros = new Array();
    var i = 0;
    console.log(haErros);

    jQuery(".enc-cod-tab").each(function(){
    var tudo = jQuery(this);

    // Incrementar posição no array
        ++i

    jQuery(this).find("#remover").click(function() {
        jQuery(tudo).remove();
    });

    jQuery(this).keyup(function(){


    var input_cod = jQuery(this).find("#sku");
    var tick = jQuery(this).find("#tick");
    var cross = jQuery(this).find("#cross");
    var nome_do_produto = jQuery(this).find("#nome_do_produto");
    var codigo_inexistente = jQuery(this).find("#codigo_inexistente");

    var sku = jQuery(input_cod).val();

    if(sku == "" || sku.length < 7){
        jQuery(input_cod).css('border', '1px #CCC solid');
        jQuery(tick).hide();
        jQuery(nome_do_produto).hide();
    } else {
        jQuery.ajax({
            type: "POST",
            url: "scripts/verificar_cod.php",
            data: 'sku='+ sku,
            cache: false,
            success: function(response){
                if(response.length > 0){
                    jQuery(input_cod).css('border', '1px #090 solid');
                    jQuery(tick).fadeIn();
                    jQuery(cross).hide();
                    jQuery(nome_do_produto).html(response);
                    jQuery(nome_do_produto).fadeIn();
                    jQuery(codigo_inexistente).hide();
                    haErros[i] = 'falso';
                    //jQuery("#btn_adicionar").css("opacity", 1);
                    //jQuery("#btn_adicionar").removeAttr("disabled")
                } else {
                    jQuery(input_cod).css('border', '1px #C33 solid');
                    jQuery(cross).fadeIn();
                    jQuery(tick).hide();
                    jQuery(nome_do_produto).hide();
                    jQuery(codigo_inexistente).fadeIn();
                    haErros[i] = 'verdadeiro';
                    //jQuery("#btn_adicionar").css("opacity", 0.2);
                    //jQuery("#btn_adicionar").attr("disabled", "disabled")}
                }
            }
        })
    }

    })

    // Função para ver se há erros
    jQuery(this).keydown(function(){
    if (jQuery.inArray("verdadeiro", haErros) != -1){
        jQuery("#btn_adicionar").css("opacity", 0.2);
        jQuery("#btn_adicionar").attr("disabled", "disabled");
    } else {
        jQuery("#btn_adicionar").css("opacity", 1);
        jQuery("#btn_adicionar").removeAttr("disabled");
    }
    });

    })};

如您所见,如果没有错误,我试图在数组中插入值“falso”,如果 ajax 无法从数据库中检索 SKU,则插入“verdadeiro”。然后,在“keyup”函数中,我正在检查数组中的值“verdadeiro”,如果存在,提交按钮将被禁用。

这仅适用于第二个(等等)SKU 输入,并且仅在我将 SKU 输入错误 2 个或更多字母之后。

示例:sku123 存在。如果我输入“sku1234”,它不会禁用提交按钮,但如果我输入“sku12345”,那么它会按预期工作。

知道发生了什么吗?

4

0 回答 0