2013-05-11 34 views
-2

我从服务器获取数据并打印到表格中。我有两个选项(批准和拒登)的下拉菜单。我想调用一个函数来更新它的值,只有它被选中的那一行。我的代码是:下拉菜单只适用于最上面的行

<script type="text/javascript"> 
/** 
* This code declares your class and saves an object "blogentry" to the table on StackMob. 
* StackMob will create the table for you automatically based on your JSON. 
*/ 
$(document).ready(function() { 
      result(); 
      function result() { 

      var device = StackMob.Model.extend({ schemaName: 'device' }); 
      var mydevice = new device({ }); 
        var q = new StackMob.Collection.Query(); 
        q.equals('device_org', 1); 
        q.setRange(0,9).orderDesc('lastmoddate'); 

        mydevice.query(q, { 
         success: function(modal) { 
          //After StackMob returns "Bill Watterson", print out the result 
          var array = modal.toJSON(); 
          // console.debug(array); 
          //$('#data').html(array[0].user_name); 
          var val = array[0].lastmoddate; 
          $('#last_mod_date').attr('value', val); 


           var key; 
           var count = 0; 
           for(key in array) { 
            if(array.hasOwnProperty(key)) { 
             count ++; 
            } 
           } 
                   // $("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"<select id='abc' ><option value='true'>Approve</option><option value='false'>DisApprove</option></select></td> <td>"+ new Date(array[i].lastmoddate)+"</td><tr>"); 

           //alert(count); 
          for(var i=0; i<=count; i++) 
          { 
          // if(array[i].org_img == localStorage.getItem("stackmob.oauth2.user")) 

           //alert(array[i].org_img); 
            //$('#last_mod_date').html(array[0].lastmoddate); 
            //$('#device_id').attr('value',disapprov); 
            //alert(val); 
            $("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"<select id='abc' ><option value='true'>Approve</option><option value='false'>DisApprove</option></select></td> <td>"+ new Date(array[i].lastmoddate)+"</td><tr>"); 

       $(document).on('change', 'select#abc', function(){ 
// do something 
//alert("Updated"); 
var value=$("#abc").val(); 
alert(value); 

//exit; 
}); 

           //end if condition 
          } // end for loop 




         } //end success 


        }); // end imagesearch schema query 

        } // end result function 


      setInterval(check_newentry,1000); 

        function check_newentry() { 
         var device = StackMob.Model.extend({ schemaName: 'device' }); 
      var mydevice = new device({ }); 
        var q = new StackMob.Collection.Query(); 
        q.orderDesc('lastmoddate'); 
        mydevice.query(q, { 
         success: function(modal) { 
          //After StackMob returns "Bill Watterson", print out the result 
          var array = modal.toJSON(); 
          // console.debug(array); 
          //$('#data').html(array[0].user_name); 


          // alert(lastmod_date_old +"..."+ lastmod_date); 
          if(lastmod_date_old < lastmod_date) 

          { 

           var val = array[0].lastmoddate; 
           $('#last_mod_date').attr('value', val); 

           var key; 
           var count = 0; 
           var counter=0; 
           for(key in array) { 
            if(array.hasOwnProperty(key)) { 
             count ++; 
            } 
           } 
           //alert(count); 
         for(var i=0; i<=count; i++) 
          { 

           if(counter<50) 
           { 

            //$("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"</td><td>"+new Date(array[i].lastmoddate)+"</td><tr>"); 

            //------------------------------------------- end device schema code 
                     $("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"<select id='myList'><option value='true'>Approve</option><option value='false'>DisApprove</option></select></td> <td>"+ new Date(array[i].lastmoddate)+"</td><tr>"); 


            counter++; 

           } 
           else 
           exit(); 
          } 
         } 
         } 
        }); 
        } // end check_newentry 
        }); 

     </script> 

的卡扣是:enter image description here

有什么问题与此代码,以及它将如何对所有行工作。我想选择与该行对应的IMEI号码。我该怎么做。请帮助我。

回答

1

尝试外循环,当你试图让通过ID ABC它只是抓住了第一个元素的事件连接到任何选择ID为ABC

$(document).on('change', 'select#abc', function(){ 
// do something 
}); 

我相信。 您可以只改变,而不是使用

document.getElementById('abc') 

使用

$('select#abc').change(function(){ 
//do something 
}); 

所以它抓住所有id为ABC的选择

+0

我从stackmob server.WIthin获取数据的代码和使用jQuery查询的成功我正在使用循环来打印它.WHen我试着让你的代码工作,但只在循环内部。因此,只选择一个选项,该函数被称为时间的no作为行(例如,如果有5行被称为5次)。我只想调用一次函数。我认为与id ='abc'的范围有些问题,这就是为什么它不在循环外工作。我应该怎么做才能解决这个问题? – Alpesh 2013-05-12 15:28:07

+0

更新您的代码 – sergioadh 2013-05-12 15:53:30

+0

为解决这个问题,我使用退出,所以它只调用函数。现在我想根据选择批准或不批准选项的同一行获取设备IMEi编号。我的意思是我想更新与IMEI对应的下拉菜单的值。所以我怎么才能得到这个实质的IMEI? – Alpesh 2013-05-12 16:19:41