كيف يمكنني استرجاع أحداث التغيير مسج من عناصر النموذج ديناميكية في PHP؟

StackOverflow https://stackoverflow.com/questions/1020267

سؤال

في أجل اختيار الفئات، وأريد أن استخدام القوائم المنسدلة. تتضمن كل قائمة مستوى واحد من الفئات. لذلك فمن: المستوى الأعلى، ودون، subsub، subsubsub الخ يتم استرداد كل مستوى حيوي من خلال بلدي getcat.php النصي، مما يدل على وجوه <select>

وواسترجاع يعمل حتى الآن مع التعليمات البرمجية التالية. ومع ذلك، لأنه نموذج، أريد الحصول على القيمة المحددة الماضية حتى أتمكن من فئة معرف. وهذا لا يعمل بالنسبة لي. حاولت $("select:last option:selected")، ولكن هذا لا يعمل مع العناصر التي تم إدراجها حديثا.

وبعد تحديد الفئة، يجب على حقل إدخال تظهر حيث يمكن للمستخدم أن يجعل له فرعية الخاصة (داخل فئة مختارة). وهذا أيضا لا يعمل مع عناصر جديدة.

والآن، حاولت أن تلعب مع .live ولكن هذا لا يدعم أحداث التغيير. هل اللاعبين لديها أي نصائح حول كيفية تحسين ذلك؟

وحاليا أنا عندي البرمجية التالية:

$("select").bind("change", function(){
    $(this).nextAll().remove();
    var value = $(this).val();
    $("#currentcat").val(value);
    if($("select:last option:selected").hasClass('makenew')) {
        $("#newcat").show();
    }
    else if($("select:last option:selected").hasClass('disabled')) { }
    else {
    $.get("getcat.php", { c: value },
        function(data){
            $("#getcats").append(data);
        });
    $("#newcat").hide();
    }    
});

ولكن، وكما ترون، انها ليست من الجمال.

هل كانت مفيدة؟

المحلول

هل يجب إعادة ربط الحدث onchange إلى مربع حدد الجديد؟

نصائح أخرى

إذا كنت تريد <option>s جديدة لتكون ملزمة لDOM والعمل عبر مختلف المتصفحات، أود أن أقترح إلحاق لهم اختيار الخاصة بك باستخدام document.createElement وdocument.createTextNode مثل ذلك:

var opt = document.createElement('option');
opt.value = "someValue";
opt.appendChild(document.createTextNode("someText"));
$('#currentcat').append(opt);

وهكذا بدلا من استخدام $. احصل ربما يجب عليك استخدام $ .getJSON ل جلب كائن JSON التي تحتوي على القيم وسمات النص من الخيارات التي سيتم إلحاق لاختيار الخاصة بك. الكائن JSON استردادها من الملقم ينبغي أن تبدو هذه:

                { "options" : [   
                                    { "text" : "Fishing",  // First element
                                      "value"  : "5" },
                                    
                                    { "text" : "Skiing",  // Second Element
                                      "value"  : "70" }
                               ]
                }

وبالتكرار عبر الكائن سوف ننظر بشيء من هذا القبيل:

$.getJSON("getcat.php", { c: value }, function(json) {
    var $select = $('<select></select>).attr('id','currentcat').attr('name','currentcat').hide(); 
    $.each(json.options, function(i, item) {
        var opt = document.createElement('option');
        opt.value = item.value;
        opt.appendChild(document.createTextNode(item.text));
        $('#currentcat').append(opt);        
    });
    $("#newcat").hide();
    $('#someDiv').append($select).show();
}); 

ما سبق هو لم تختبر، ويعكس فهمي لسؤالك. نأمل أن يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top