簡體   English   中英

單擊時將單元格表更改為文本框

[英]Change cell table into text box when clicked

我的代碼有問題。 當用戶單擊單元格表時,文本區域應出現。 單擊該文本區域時,該區域將始終顯示在第一個單元格上。 我希望文本區域准確顯示在單元格出現的位置。 (表中的值是從數據庫中檢索的。)

<?php
session_start();

if(!isset($_SESSION['key']))
{
    header("location:index.php");   
}

    include"connect.php";?>
   <html>
    <head>
       <title>All Records</title>   
       <style>
        table{ text-align:justified;}
        a {text-decoration:none;
           color:black;
        }
        .replace {display:none;}
   </style>
   <script type="text/javascript">
       function exchange(el){
        var ie=document.all&&!document.getElementById? document.all : 0;
        var toObjId=/b$/.test(el.id)? el.id.replace(/b$/,'') : el.id+'b';
        var toObj=ie? ie[toObjId] : document.getElementById(toObjId);

        if(/b$/.test(el.id))  
        toObj.innerHTML=el.value;
        else{
        toObj.style.width=el.offsetWidth+7+'px';
        toObj.value=el.innerHTML;
        }
        el.style.display='none';
        toObj.style.display='inline';
        }
      </script>
</head>
   <body>


   <?php 
     echo "<table border=1 id='records' >";
     echo "<tr><th class='data' rowspan='2' ><strong>EMPLOYEE</strong></th>";
     echo "<th class='data' rowspan='2'>DATE</th>
                <th colspan='2'>AM</th>
                <th colspan='2'>PM</th>
                <th colspan='2'>OVERTIME</th></tr>";
     echo "<tr>
        <th>Arrival</th>
        <th>Departure</th>  
        <th>Arrival</th>
        <th>Departure</th>
        <th>In</th>
        <th>Out</th>
       </tr>";


   $query="SELECT 
   employee_detail.employee_code,
   employee_detail.lname,
   employee_detail.fname,
   employee_detail.mname,
   employee_record.date,
   employee_record.am_in,
   employee_record.am_out,
   employee_record.pm_in,
   employee_record.pm_out,
   employee_record.over_in,
   employee_record.over_out
   FROM employee_detail INNER JOIN employee_record ON
   employee_record.employee_code=employee_detail.employee_code ORDER BY id DESC ";

   $result=mysql_query($query);
   $affected=mysql_affected_rows();

   while($affected>=1&&$row=mysql_fetch_array($result))
   {
     echo '<tr><td><a href="edit.php?id2='.$row['employee_code'].'" name="edit">';
     echo $row['lname'].",&nbsp";
     echo $row['fname']."&nbsp";
     echo $row['mname']."</a></td>"; 
     echo '<td>'.$row['date'].'</td>';
     echo '<td><span id="itm1" onclick="exchange(this);">'.$row['am_in'].'</span>                  
     <textarea ondblclick="exchange(this);" id="itm1b" class="replace" type="text" 
     value='.$row['am_in'].'></textarea></td>';
     echo '<td>'.$row['am_out'].'</td>';
     echo '<td>'.$row['pm_in'].'</td>';
     echo '<td>'.$row['pm_out'].'</td>';
     echo '<td>'.$row['over_in'].'</td>';
     echo '<td>'.$row['over_out'].'</td>';
     $affected--;
   }     
     echo "</tr></table>";
   ?>

   </body>
   </html>

第一個<textarea>始終是出現的事實,這聽起來似乎您的代碼運行正常,但是由於您生成具有相同id屬性的多個元素,因此它以第一個匹配元素為目標,而不是最靠近您的位置點擊。

通過附加結果的'employee_code'值(可能是數據庫中的主鍵),使每個id唯一(實際上是有效性的要求):


    echo '<td>';

    echo   '<span id="itm"' . $row['employee_code'] . '" ';
    echo   'onclick="exchange(this);">';
    echo   $row['am_in'];
    echo   '</span>';

    echo   '<textarea ondblclick="exchange(this);" id="itm';
    echo   $row['employee_code'] . 'b" class="replace" type="text" ';
    echo   'value=' . $row['am_in'] . '>';
    echo   '</textarea>'

    echo '</td>';

我可以使用php值作為跨度和文本區域的ID嗎?

  echo '<td>';
  echo   '<span id='.$row['employee_code'] . ' onclick="exchange(this);">'.$row['am_in'].'</span>';
  echo '<textarea ondblclick="exchange(this);" id='.$row['employee_code']. ' class="replace" type="text" value=' . $row['am_in'] .' >'. $row['am_in'] . '</textarea>';
  echo '</td>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM