2013-02-12 29 views
1

在我的应用程序中,我使用了salesforce数据库。点击一个按钮后,我需要更新任务状态字段。我使用的代码在HTML文件中的js文件获取newStatus-需要更新Salesforce数据库任务表中的状态

<a id="btnTaskUpdateStatus" href="#task_status_change_page" data-rel="popup" data-position-to="window" data-transition="pop"> 
    <img src="images/task_edit24.png" width="32" height="32" /> 
</a> 
<div data-role="popup" id="task_status_change_page" data-overlay-theme="a" data-theme="c" style="width:280px !important"> 
    <script>$('select').selectmenu({ preventFocusZoom: true });</script> 
    <div data-role="header" data-theme="b"> 
     <h1>Update Status</h1> 
    </div> 
    <div data-role="content" data-theme="d"> 
     <div data-role="fieldcontain"> 
      <label for="select-task-status" class="select"><strong>Status:</strong></label> 
      <select id="select-task-status" name="select-status" class="selectmenu"> 
       <option value="Not Started">Not Started</option> 
       <option value="In Progress">In Progress</option> 
       <option value="Completed">Completed</option> 
       <option value="Waiting On someone else">Waiting On someone else</option> 
       <option value="Deffered">Deferred</option> 
      </select> 
     </div> 
     <div data-role="controlgroup" data-type="horizontal" class="center-wrapper"> 
      <a id="btnTaskUpdateSubmit" data-role="button" data-inline="true" data-direction="reverse" data-rel="back" >Submit</a> 
     </div> 
    </div> 
</div> 

现在我使用的代码 -

 
$j('#btnTaskUpdateStatus').click(function(e) { 
    var recordId = $j('#TaskRecordId').val(); 
    if (recordId != null) { 
     var currStatus = $j('#TaskStatus').text(); 
     updateHTMLVal('#select-task-status', currStatus); 
     $('#select-task-status').selectmenu('refresh'); 
    } 
    $j('#btnTaskUpdateSubmit').click(function(e){ 
     var newStatus = $("#select-task-status").val(); 
     if (newStatus != currStatus) { 
      changeTaskStatus(recordId, newStatus,creds); 
      $('#select-task-status').selectmenu('refresh'); 
      $('#TaskStatus').html(newStatus); 
     } 
    }); 
}); 
function changeTaskStatus(Id, newStatus) { 
    var fields = {}; 
    fields["Status"] = newStatus; 
    forcetkClient.update('Task', Id, fields, function(response) { 
      alert("Update"); 
     }, onErrorSfdc); 
} 

现在我的问题是,当我更新状态,它将更新正确,但下一次我再次更改另一个任务“$j('#btnTaskUpdateSubmit').click(function(e){”这个称为两次的函数的状态,并且新任务的状态覆盖以前的任务状态。

如果我的问题不清楚,请指导我如何以您的方式更新任务状态。 在此先感谢。任何帮助表示赞赏。

回答

0

您可能将函数堆叠到$ j('#btnTaskUpdateSubmit')元素上。尝试在添加新事件之前删除当前的点击事件处理程序。像这样:

$j('#btnTaskUpdateStatus').click(function(e) { 
    var recordId = $j('#TaskRecordId').val(); 
    if (recordId != null) { 
     var currStatus = $j('#TaskStatus').text(); 
     updateHTMLVal('#select-task-status', currStatus); 
     $('#select-task-status').selectmenu('refresh'); 
    } 
    // Remove any existing click handlers 
    $j('#btnTaskUpdateSubmit').unbind('click'); 

    $j('#btnTaskUpdateSubmit').click(function(e){ 
     var newStatus = $("#select-task-status").val(); 
     if (newStatus != currStatus) { 
      changeTaskStatus(recordId, newStatus,creds); 
      $('#select-task-status').selectmenu('refresh'); 
      $('#TaskStatus').html(newStatus); 
     } 
    }); 
}); 
+0

非常感谢Eric,它工作正常4我.... :) – yenu 2013-02-13 04:32:20

相关问题