Эффективный JQuery способ выбрать элемент и поместить в текстовое поле - PullRequest
0 голосов
/ 17 февраля 2012

У меня проблема в реализации и эффективном способе использования JQuery для выбора и выбора в выпадающем списке и размещения его в текстовом поле.См. Изображение ниже, проблема в том, что, во-первых, я выбираю элемент и в выпадающем списке, показанном 1, он правильно помещает элемент в желаемое текстовое поле, показанное 2, но позже, когда я выбираю из второго выпадающего списка предыдущие и текущие изменения.Весь код выглядит следующим образом.

    $("input[name^=pasta_text]").focus(function() {
    var gecerliid=$(this).parent().get(0).id;
    var mevcutdeger=$(this).val();
    var sondeger=$(this).val();
    var seciliGrup="";
    if(typeof orjinal === "undefined") {
        var orjinal=$(this);
    } else {
        delete orjinal;
        var orjinal=$(this);
    }

    alert($("#pastatext["+gecerliid+"]").id());

    if($.inArray(mevcutdeger,Knowledge)>=0) { seciliGrup="Knowledge"; mevcutgrup=0; mevcutsira=$.inArray(mevcutdeger,Knowledge); }
    if($.inArray(mevcutdeger,Comprehension)>=0) { seciliGrup="Comprehension"; mevcutgrup=1; mevcutsira=$.inArray(mevcutdeger,Comprehension); }
    if($.inArray(mevcutdeger,Application)>=0) { seciliGrup="Application"; mevcutgrup=2; mevcutsira=$.inArray(mevcutdeger,Application); }
    if($.inArray(mevcutdeger,Analysis)>=0) { seciliGrup="Analysis"; mevcutgrup=3; mevcutsira=$.inArray(mevcutdeger,Analysis); }
    if($.inArray(mevcutdeger,Synthesis)>=0) { seciliGrup="Synthesis"; mevcutgrup=4; mevcutsira=$.inArray(mevcutdeger,Synthesis); }
    if($.inArray(mevcutdeger,Evaluation)>=0) { seciliGrup="Evaluation"; mevcutgrup=5; mevcutsira=$.inArray(mevcutdeger,Evaluation); }

    //$("#pasta_div").text(seciliGrup).show();
    $(this).hide();
    $("#learn_outcome").attr("size","49");
    $('input[name=pasta_submit], select[name=pasta_grup], select[name=pasta_fiil]').remove();

    $(this).before("<select name='pasta_grup' class='formin'>");
    //<select name='pasta_grup[".($s+1)."]' class='formin'><option value='-1'>GRUP</option></select><select name='pasta_fiil[".($s+1)."]' class='formin'><option value='-1'>FİİL</option></select><input type='button' value='OK' class='formbutton' name='pasta_submit' id='pasta_submit'>
    $.each(taxonomy, function(key, value) {   
         $("select[name=pasta_grup]")
              .append($('<option>', { value : key })
              .text(value)); 
    });
    $(this).before("</select>");
    $("select[name=pasta_grup]").val(mevcutgrup);

    $("select[name=pasta_fiil]").remove();
    $(this).before("<select name='pasta_fiil' class='formin'>");
    fiilOlustur(mevcutgrup);        
    $("select[name=pasta_fiil]").val(mevcutsira).focus();
    $(this).before("</select>");
    $(this).before("<input type='button' value='OK' class='formbutton' name='pasta_submit'>");

    $("#pasta_div").text("mevcutdeger:"+mevcutdeger+" mevcutsira:"+mevcutsira+" mevcutgrup:"+mevcutgrup+" eleman:"+$(this).id);

    $("select[name=pasta_grup]").live("change",function() {
        mevcutgrup=$("select[name=pasta_grup] option:selected").val();
        $('select[name=pasta_fiil]').empty();
        fiilOlustur(mevcutgrup);
        $('select[name=pasta_fiil] option:first').attr("selected","selected");
    });

    $("select[name=pasta_fiil]").live("change",function() {
        sondeger=$("select[name=pasta_fiil] option:selected").text();
        orjinal.val(sondeger);
        $("#pasta_div").text("post change: "+sondeger);
    });

    $("input[name=pasta_submit]").live("click", function() {
        orjinal.show().empty();
        sondeger = $("select[name=pasta_fiil] option:selected").text();
        $("#pasta_div").text("post click: "+sondeger);
        orjinal.addClass("forminred").blur(function() { $(this).show(); });
        $('input[name=pasta_submit], select[name=pasta_grup], select[name=pasta_fiil]').remove();
    });

    $("#pasta_div").text("last level: "+sondeger);
    //$("#pasta_div").text("sondeger: "+sondeger+" sonra: "+$(this).val());
    $(this).val(sondeger).addClass("forminred").blur(function() { $(this).show(); });

    function fiilOlustur(grupno) {
        if(grupno==0) { $.each(Knowledge, function(key, value) { $('select[name=pasta_fiil]').append($('<option>', { value : key }).text(value)); }); }
        if(grupno==1) { $.each(Comprehension, function(key, value) { $('select[name=pasta_fiil]').append($('<option>', { value : key }).text(value)); }); }
        if(grupno==2) { $.each(Application, function(key, value) { $('select[name=pasta_fiil]').append($('<option>', { value : key }).text(value)); }); }
        if(grupno==3) { $.each(Analysis, function(key, value) { $('select[name=pasta_fiil]').append($('<option>', { value : key }).text(value)); }); }
        if(grupno==4) { $.each(Synthesis, function(key, value) { $('select[name=pasta_fiil]').append($('<option>', { value : key }).text(value)); }); }
        if(grupno==5) { $.each(Evaluation, function(key, value) { $('select[name=pasta_fiil]').append($('<option>', { value : key }).text(value)); }); }
    }

    /*if(seciliGrup<>"") {
        fiilFonksiyon();
    }*/

    /*var mevcutdeger=$(this).index();
    $("#pasta_div").text(mevcutdeger).show();
    grupFonksiyon();*/
});

Не могли бы вы рассказать мне, как реализовать его более эффективно с помощью JQuery?Есть ли какой-то другой способ, которым вы знаете, который может решить мою проблему?Спасибо.

enter image description here

1 Ответ

0 голосов
/ 17 февраля 2012

Итак, у вас есть поле выбора с тем же именем, да, ваш код определенно сделает только одно значение блока выбора и запишет значение в текстовое поле.

потому что вы жестко закодировали имя окна выбора

sondeger = $("select[name=pasta_fiil] option:selected").text();

используйте ключевое слово "this", чтобы получить значение из выбранного списка.

sondeger = $(this).val(); // this will return you value from selected listbox, 
...