2014-02-10 4 views
0

У меня есть jQuery, где я добавляю тег select внутри таблицы для каждой строки, я хочу сохранить событие onChange для каждого раскрывающегося списка в каждой строке. Я попытался использовать событие onchange, как показано, но не работает. Мой JQuery код, как показано ниже:onchange event для select tag с помощью jquery

for (var j = 0; j < leng; j++) { 
    o = proplist[j]; 
    txt = "<tr><td>" + o.Value + "</td><td><select name=" + o.Key + "onchange='OnChange();'>"; 
    for (var k = 0; k < data.length; k++) { 
     if (data[k] == o.Value || data[k] == o.Key) { 
      txt1 += " <option selected>" + data[k] + "</option>"; 
     } else txt1 += " <option>" + data[k] + "</option>"; 
    } 
    txt = txt + txt1 + "<option value='0'>Ignore</option></select></td></tr>"; 
    $("#propertycolumnListTable tbody").append(txt); 
    txt = ""; 
    txt1 = ""; 
} 
+0

, если у вас есть 'OnChange()' функция, объявленная ее следует называть с этим кодом, я хотел бы проверить, есть ли какая-либо ошибка, показывающая в консоли Firebug. – Naryl

+0

Функция 'OnChange' должна быть доступна в глобальной области видимости, поэтому объявляйте ее вне любых других функций (например, обработчик событий JQuery DOM ready). –

+0

И проверьте консоль, есть вероятные ошибки. – dfsq

ответ

0

Вы можете попробовать это:

$('select').change(function() { 
    OnChange(); 
}); 
+0

Это не работает для динамически добавленных выбирает – mplungjan

+0

Вы можете использовать $ (parent) .on ('change', function() {OnChange()}); – ducdhm

0

Попробуйте

$(function() { 
    $("#propertycolumnListTable tbody").on("change","select",function() { 
    // whatever you want when any select in the tbody changes 
    }); 
}); 

и если у вас есть JQuery, почему бы не использовать его?

for (var j = 0; j < leng; j++) { 
    o = proplist[j]; 
    var $tr = $("<tr/>"); 
    var $td = $("<td/>"); 
    var $sel = $("<select/>",{name:o.Key}); 
    $sel.append('<option value='0'>Ignore</option>'); 
    var selected = null; 
    data.each(function() { 
    $sel.append("<option/>",{value:this,text:this}); 
    if (this == o.Value || this == o.Key) selected=this; 
    }); 
    if (selected) $sel.val(selected); 
    $td.append($sel); 
    $tr.append($td); 
    $("#propertycolumnListTable tbody").append($tr); 
}