2016-10-04 26 views
0

所以我有一個帶有兩個單獨按鈕的表格,即編輯和取消激活。我能夠在停用時使用綁定功能,以便按鈕在我添加行時工作。但是,我似乎無法弄清楚編輯按鈕。我認爲我已經從我的其他綁定函數中正確地複製了大部分信息,但還沒有看到成功。希望有人能夠提供一些幫助。我只是需要編輯按鈕才能在向表中添加其他行時正常工作和正常工作。綁定函數允許添加按鈕正常工作

HTML/PHP:

<html> 
    <head> 
     <title>Stage Rebate Master HTML Table</title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
     <link rel="stylesheet" type="text/css" href="html_master.css"> 
     <script type="text/javascript" src="html_master.js"></script> 
    </head> 

<label id="table_name">Stage_Rebate_Master</label><br> 

<body> 

<img src="carter.png" alt="Carter Lumber" id="carter"> 

<table id="html_master"> 
<thead> 
    <tr> 
    <td>ID</td> 
    <td>Vendor</td> 
    <td>Buyer ID</td> 
    <td>POC Name</td> 
    <td>POC Email</td> 
    <td>POC Phone</td> 
    <td>Edit/Delete</td> 
    </tr> 
</thead> 
<tbody> 

<?php 
    foreach ($dbh->query($sql) as $rows){ 
    ?> 
    <tr> 
     <td class="mr_id" contenteditable="false"><?php echo intval ($rows['MR_ID'])?></td> 
     <td class="mr_name" contenteditable="false"><?php echo $rows['MR_Name']?></td> 
     <td class="buyer_id" contenteditable="false"><?php echo $rows['Buyer_ID']?></td> 
     <td class="poc_n" contenteditable="false"><?php echo $rows['MR_POC_N']?></td>  
     <td class="poc_e" contenteditable="false"><?php echo $rows['MR_POC_E']?></td> 
     <td class="poc_p" contenteditable="false"><?php echo $rows['MR_POC_P']?></td> 
     <td><input type="button" class="edit" name="edit" value="Edit"> 
     <input type="button" class="deactivate" name="deactivate" value="Deactivate"></td> 
    </tr> 
<?php 
    } 
?> 
</tbody> 
     <br> 
     <input type="button" class="add" value="Add Row" onclick="addRow('html_master')"> 
</table> 

<input type="button" class="add" value="Add Row" onclick="addRow('html_master')"> 

</body> 
</html> 

的JavaScript:

// ----- Deactivate Row ----- 

function bindDeactivate() { 
    $('#html_master').on("click",".deactivate",function() { 
    var $this = $(this); 
    var $tr = $this.closest('tr'); 
    var action = $tr.hasClass('deactivated') ? 'activate' : 'deactivate'; 

    if (confirm('Are you sure you want to ' + action + ' this entry?')) { 
     $tr.toggleClass('deactivated'); 
     $this.val(function(i, t) { 
     return t == 'Deactivate' ? 'Activate' : 'Deactivate'; 
     }); 
    } 
    }); 
} 

$(document).ready(function() { 
    // Bind the deactivate button click to the function 
    bindDeactivate(); 
}); 

$(document).ready(function() { 
    // Bind the edit button click to the function 
    bindEdit(); 
}); 

// ----- Add Row ----- 

function addRow(tableID) { 

    var table = document.getElementById(tableID); 

    var rowCount = table.rows.length; 
    var row = table.insertRow(rowCount); 

    var cell1 = row.insertCell(0); 
    cell1.innerHTML = rowCount; 

    var cell2 = row.insertCell(1); 
    var element2 = document.createElement("input"); 
    element2.type = "text"; 
    element2.name = "txtbox[]"; 
    cell2.appendChild(element2); 

    var cell3 = row.insertCell(2); 
    var element3 = document.createElement("input"); 
    element3.type = "text"; 
    element3.name = "txtbox[]"; 
    cell3.appendChild(element3); 

    var cell4 = row.insertCell(3); 
    var element4 = document.createElement("input"); 
    element4.type = "text"; 
    element4.name = "txtbox[]"; 
    cell4.appendChild(element4); 

    var cell5 = row.insertCell(4); 
    var element5 = document.createElement("input"); 
    element5.type = "text"; 
    element5.name = "txtbox[]"; 
    cell5.appendChild(element5); 

    var cell6 = row.insertCell(5); 
    var element6 = document.createElement("input"); 
    element6.type = "text"; 
    element6.name = "txtbox[]"; 
    cell6.appendChild(element6); 

    var cell7 = row.insertCell(6); 
    var element7 = document.createElement("input"); 
    var element8 = document.createElement("input"); 
    element7.type = "button"; 
    element8.type = "button"; 
    element7.name="edit"; 
    element8.name="deactivate"; 

    var setClass = document.createAttribute("class"); 
    setClass.value = "edit"; 
    element7.setAttributeNode(setClass); 

    var setClass1 = document.createAttribute("class"); 
    setClass1.value = "deactivate"; 
    element8.setAttributeNode(setClass1); 

    element7.attr="class"; 
    element8.attr="class"; 
    element7.value="Edit"; 
    element8.value="Deactivate"; 
    cell7.appendChild(element7); 
    cell7.appendChild(element8); 

    // Bind this new deactivate button click to the function 
    $('#html_master').off("click",'.deactivate'); 
    bindDeactivate(); 

    // Bind this new deactivate button click to the function 
    $('#html_master').off("click",'.edit'); 
    bindEdit(); 
} 




function bindEdit() { 
    $('#html_master').on("click",".edit",function() { 
     var $this = $(this); 
     var tds = $this.closest('tr').find('td').not('.mr_id').filter(function() { 
     return $(this).find('.edit').length === 0; 
    }); 
    if ($this.html() === 'Edit') { 
     $this.html('Save'); 
     tds.prop('contenteditable', true); 
    } else { 
     var isValid = true; 
     var errors = ''; 
     $('#myDialogBox').empty(); 
     tds.each(function(){ 
      var type = $(this).attr('class'); 
      var value = $(this).text(); 
      switch(type){ 
       case "buyer_id": 
        if(!$.isNumeric(value)){ 
         isValid = false; 
         errors += "Please enter a valid Buyer ID\n"; 
         } 
        break; 
       case "poc_n": 
        if(value == value.match(/^[a-zA-Z\s]+$/)){ 
         break; 
        } 
        else { 
         isValid = false; 
         errors += "Please enter a valid Name\n"; 
        } 
        break; 
       case "poc_e": 
        if(value == value.match(/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/)){ 
         break; 
        } 
        else { 
         isValid = false; 
         errors += "Please enter a valid Email\n"; 
        } 
        break; 
       case "poc_p": 
        if(value == value.match('^[0-9()+/-]{10,}$')){ 
         break; 
        } 
        else { 
         isValid = false; 
         errors += "Please enter a valid Phone Number\n";  
        } 
        break; 
      } 
     }) 
     if(isValid){ 
      $this.html('Edit'); 
      tds.prop('contenteditable', false); 
     }else{ 
      alert(errors); 
     } 
    } 
}); 
} 

回答

0

使用下面的代碼

<!DOCTYPE html> 
    <html> 
    <head> 
    <script src="jquery.min.js"></script> 
    <script type="text/javascript" > 
    function addRow(tableID) { 

     var table = document.getElementById(tableID); 

     var rowCount = table.rows.length; 
     var row = table.insertRow(rowCount); 

     var cell1 = row.insertCell(0); 
     cell1.innerHTML = rowCount; 

     var cell2 = row.insertCell(1); 
     var element2 = document.createElement("input"); 
     element2.type = "text"; 
     element2.name = "txtbox[]"; 
     cell2.appendChild(element2); 

     var cell3 = row.insertCell(2); 
     var element3 = document.createElement("input"); 
     element3.type = "text"; 
     element3.name = "txtbox[]"; 
     cell3.appendChild(element3); 

     var cell4 = row.insertCell(3); 
     var element4 = document.createElement("input"); 
     element4.type = "text"; 
     element4.name = "txtbox[]"; 
     cell4.appendChild(element4); 

     var cell5 = row.insertCell(4); 
     var element5 = document.createElement("input"); 
     element5.type = "text"; 
     element5.name = "txtbox[]"; 
     cell5.appendChild(element5); 

     var cell6 = row.insertCell(5); 
     var element6 = document.createElement("input"); 
     element6.type = "text"; 
     element6.name = "txtbox[]"; 
     cell6.appendChild(element6); 

     var cell7 = row.insertCell(6); 
     var element7 = document.createElement("input"); 
     var element8 = document.createElement("input"); 
     element7.type = "button"; 
     element7.setAttribute("class","edit"); 
     element8.setAttribute("class","deactivate"); 
     element8.type = "button"; 
     element7.name="edit"; 
     element8.name="deactivate"; 
     element7.value="Edit"; 
     element8.value="Deactivate"; 
     cell7.appendChild(element7); 
     cell7.appendChild(element8); 
    } 

    $(document).on('click','.deactivate',function() { 
     var $this = $(this); 
     var $tr = $this.closest('tr'); 
     var action = $tr.hasClass('deactivated') ? 'activate' : 'deactivate'; 

     if (confirm('Are you sure you want to ' + action + ' this entry?')) { 
      $tr.toggleClass('deactivated'); 
      $this.text(function(i, t) { 
      return t == 'Deactivate' ? 'Activate' : 'Deactivate'; 
      }); 
     } 
    }); 

    $(document).on('click','.edit',function() { 
      var $this = $(this); 
      var tds = $this.closest('tr').find('td').not('.mr_id').filter(function() { 
      return $(this).find('.edit').length === 0; 
     }); 
     if ($this.html() === 'Edit') { 
      $this.html('Save'); 
      tds.prop('contenteditable', true); 
     } else { 
      var isValid = true; 
      var errors = ''; 
      $('#myDialogBox').empty(); 
      tds.each(function(){ 
       var type = $(this).attr('class'); 
       var value = $(this).text(); 
       switch(type){ 
        case "buyer_id": 
         if(!$.isNumeric(value)){ 
          isValid = false; 
          errors += "Please enter a valid Buyer ID\n"; 
          } 
         break; 
        case "poc_n": 
         if(value == value.match(/^[a-zA-Z\s]+$/)){ 
          break; 
         } 
         else { 
          isValid = false; 
          errors += "Please enter a valid Name\n"; 
         } 
         break; 
        case "poc_e": 
         if(value == value.match(/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/)){ 
          break; 
         } 
         else { 
          isValid = false; 
          errors += "Please enter a valid Email\n"; 
         } 
         break; 
        case "poc_p": 
         if(value == value.match('^[0-9()+/-]{10,}$')){ 
          break; 
         } 
         else { 
          isValid = false; 
          errors += "Please enter a valid Phone Number\n";  
         } 
         break; 
       } 
      }) 
      if(isValid){ 
       $this.html('Edit'); 
       tds.prop('contenteditable', false); 
      }else{ 
       alert(errors); 
      } 
     } 
    }); 
    </script> 
    </head> 
    <body> 

    <table id="html_master"> 
    <thead> 
     <tr> 
     <td>ID</td> 
     <td>Vendor</td> 
     <td>Buyer ID</td> 
     <td>POC Name</td> 
     <td>POC Email</td> 
     <td>POC Phone</td> 
     <td>Edit/Delete</td> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
      <br> 
      <input type="button" class="add" value="Add Row" onclick="addRow('html_master')"> 
    </table> 
    </body> 
    </html>