0

我正在使用下拉菜单,并且在更改下拉菜单时正在调用 javascript。在 javascript 中,我正在使用 jquery 更改表类的内容。现在的问题是,如果我的下拉菜单需要再次更改,这还不是全部,因为我正在更改javascript 中的内容。

   function filterbyaptno(){
         var idno = document.getElementById("aplist").value;
         alert(idno);
          $.ajax({
           url:address ,
           type: 'POST',                    
           data:"idno="+idno,
           success:function(result) { 
               var numRecords = parseInt(result.rows.length);
               if(numRecords>0)
                {
                   var html = '';
                   for(var i = 0; i<numRecords;i++)
                   {
                     html +='<div><table class="support" width="700" cellpadding="10px;">
                      <tr bgcolor="#E8E8E8"><td width="7";>'+result.rows[i].firstname+'</td>'
                     +'<td width="350">'+result.rows[i].advicetoowners+'</td>'
                     +'<td width="7">'+result.rows[i].customdata+'</td><tr></table></div>'
                    }
                      $('.detais').replaceWith(html);//here i change the content of div
                }            
                 $(function() {
                        $('.droplist').change(function(){
                             filterbyaptno();//here i call javascript while dropdown change
                      });
                 });     

                }
           });  }

谁能建议我应该怎么做才能将内容相应地更改为下拉值

4

3 回答 3

0

从您的成功 ajax 调用中删除它。它不应该在那里。

$(function() {
   $('.droplist').change(function(){
      filterbyaptno();//here i call javascript while dropdown change
   });
}); 

并将其放在函数之外filterbyaptno,改为使用.live

$('.droplist').live('change', function(){
   filterbyaptno();//here i call javascript while dropdown change
});
于 2012-09-12T17:05:32.227 回答
0

尝试更多类似的东西:

function filterbyaptno() {
    var idno = $("#aplist").val();
    $.ajax({
        url: address,
        type: 'POST',
        data: {
            idno: idno
        }
    }).done(function(result) {
        if (result.rows.length) {
            var html = '';
            for (var i = 0; i < result.rows.length; i++) {
                html += '<div><table class="support" width="700" cellpadding="10px;">';
                html += '<tr bgcolor="#E8E8E8"><td width="7";>'+result.rows[i].firstname+'</td>';
                html += '<td width="350">'+result.rows[i].advicetoowners+'</td>';
                html += '<td width="7">'+result.rows[i].customdata+'</td><tr></table></div>';
            }
            $('.detais').replaceWith(html);
        }
    });
}

$(function() {    
    $(document).on('change', '.droplist', filterbyaptno);
});
于 2012-09-12T17:06:55.227 回答
0

很难说没有显示的任何 html(尤其是具有类详细信息的元素) 猜测一下,似乎

html +='<div><table cla

应该

html +='<div class='details'><table cla

编辑:

我看到您最初是从一个包含课程详细信息的表开始的。第一次触发该函数时,它会被一个包含类支持表的 div 替换。

因此,您的 html 将从

<table class='details'>
...
...
...
</table>

<div>
 <table class='support'>
 ...
 ...
 ...
 </table>
</div>

这真的是你想要的吗?

于 2012-09-12T16:59:51.340 回答