2012-02-15 45 views
0

我正在嘗試編寫顯示任務及其狀態的任務窗體的代碼。這是我的形式。更新內容中的bug ajax

enter image description here

如果我點擊狀態內容的選擇菜單將與三個選項CompletedIn ProgressWaiting for client confirmation出現。如果我選擇一個選項並按下輸入,它將在數據庫中更新。如果狀態更新爲completed,則選擇框不應顯示在點擊事件中。我的問題是,如果我更新狀態完成,然後單擊出現選擇菜單相同的狀態。但如果我修改並刷新頁面,它工作正常。我需要它刷新頁面纔是正確的。

這是我的PHP代碼

<?php 
      if($fetchstatus == 'Completed'){ 
      echo 'Completed'; 
      } 
      else{?> 
      <span id="status"><?php echo $fetchstatus; ?></span> 
      <select id="<?php echo $fetchtaskid; ?>" style="width:110px;"> 
      <option value="In progress">In progress</option> 
      <option value="Completed">Completed</option> 
      <option value="Waiting for client confirmation">Waiting for client confirmation</option> 
      </select> 
      <?php 
      } 
      ?> 

這是我的AJAX腳本

$(document).ready(function(){ 
     var eventFlag=false; 
     var originalText=''; 
     $('.updatetask tr td span#status').click(function(e){ 
      e.stopImmediatePropagation(); 
      $(this).siblings().show().focus(); 
      $(this).hide(); 
      eventFlag=false; 
      originalText=$(this).siblings().val(); 
     }); 

     $('.updatetask tr td select').blur(function(e){ 
      if(!eventFlag && validate($(this))) doAjax($(this)); 
      else 
      { 
       $(this).siblings().show(); 
       $(this).hide(); 
      } 
     }); 

     $('.updatetask tr td select').keypress(function(e){ 
      e.stopImmediatePropagation(); 
      var code = (e.keyCode ? e.keyCode : e.which); 
      if(code==13) 
      { 
       if(validate($(this))) 
       { 
        doAjax($(this)); 
        eventFlag=true; 
       } 
       else 
       { 
        $(this).siblings().show(); 
        $(this).hide(); 
       } 
      } 
     }); 

     function validate(input) 
     { 
      console.log(input.val()+" "+originalText); 
      if(input.val()!='' && input.val()!=originalText) 
      return true 
      else return false; 
     } 

     function doAjax(input) 
     { 
      var formData="proId="+input.attr('id')+"&text="+input.val(); 
       $.ajax({ 
        type: "POST", 
        url: "update_taskstatus.php", 
        data: formData, 
        success: function(data){ 
         if(data==1) 
         { 
          input.siblings().text(input.val()).show(); 
          input.hide(); 
          if(input.val()=='completed') 
          { 
           input.siblings().unbind('click'); 
          } 
         } 
         else 
         { 
          input.siblings().show(); 
          input.hide(); 
          alert("something Wrong !"); 
         } 
        }, 
        error:function (xhr, ajaxOptions, thrownError){ 
         alert("Error:"+xhr.status+" "+thrownError); 
        } 
       }); 
     } 

    }); 

我怎麼能糾正?

+0

@designersvsoft,看看。 – 2012-02-15 06:13:12

回答

1

正如你已經改變了我的代碼,我給你昨天所以我有點迷茫,不知道我當前的代碼是否將工作或沒有,但我從猜測試試這個,讓我知道結果

if(data==1) 
{ 
    input.siblings().text(input.val()).show(); 
    input.hide(); 
    if(input.val()=='Completed') 
    { 
     input.siblings().unbind('click'); 
    } 
} 

改變do ajax函數,只有第一個if塊,希望它足夠清楚。

+0

非常感謝您的努力heera。我用你的代碼更新了我的問題中的ajax腳本。但它不能正常工作。請看我的問題。 – designersvsoft 2012-02-15 06:23:21

+0

更改完成後在我的代碼裏面完成if。 – 2012-02-15 06:27:00

+0

令人驚歎。你說對了。非常感謝你。我很抱歉沒有注意到拼寫。再次感謝您的努力。 – designersvsoft 2012-02-15 06:31:40