如何使用jquery获取编辑文本的价值

时间:2012-02-04 20:59:52

标签: php javascript jquery

您好我希望从JQuery中获取更改的文本值,但我无法选择使用JQUERY编辑文本,因为编辑从php生成的文本同时循环此php代码在数据库上查询并获取编辑文本的值并在我的程序中我有每个编辑文本的编辑按钮,当用户更改编辑文本的值时,我选择新值,当用户单击编辑按钮时,将此值从get方法发送到另一个具有jquery $.ajax功能的php页面并发送新值那个带有ajax的php代码。但是我不知道如何选择编辑它改变了值的文本,因为我不知道该编辑文本的id!。当我设置一个id为每个编辑文本我只能从$("#id").change().val();获得第一个编辑文本值。我使用下面的代码,但它不起作用。我是java脚本的初学者,不知道如何解决这个问题!

var testAnswer;

function setNewTestAnswer(id){
    testAnswer = $("#id").val();
}
function sendToEdit(pID,phID,thDate,type){
    var info = 'pId='+pID+'&phId='+phID+'&testAnswer='+testAnswer+'&thDate='+thDate+'&type='+type;
}

第二个功能使用testAnswer用户在编辑文本中更改了 php代码

<?php
    include 'Connect.php'; 
    if(match($_POST['pId'], "/^[\d]+$/") ){
        $pId = $_POST['pId'];
        $result = mysql_query("select pName, pID, phName, phID, testHistoryDate, type, testAnswer from patient join reception using(pID) join physician using(phID) join testHistory using(rID) join test using(tID) where pID = $pId",$connection);
    }
    else
        die("Insert true value");
    while($row=mysql_fetch_array($result)){
        echo "<tr><td>";
        echo $row["pName"].'</td>';
        echo '<td>'.$row["phName"].'</td>';
        echo '<td>'.$row["testHistoryDate"].'</td>';
        echo '<td>'.$row["type"].'</td>';
        $type =  $row['type'];
        $testHistoryDate = $row['testHistoryDate'];
        ?>
        <td>
            <span id='spryTanswer'>
                <input type='text' name='tAnswer' id='tAnswer' value='<?php echo $row['testAnswer']; ?>' />
            </span>
        </td>
        <td>
            <input type='submit' value='Edit' name='edit' id='edit' onclick="sendToEdit('<?php echo $row['pID'] ?>','<?php echo $row['phID'] ?>', '<?php echo $row['testHistoryDate'] ?>', '<?php echo $row['type'] ?>')" />
        </td>
        </tr>
    <?php } ?>

2 个答案:

答案 0 :(得分:2)

tl; dr

所以你在这里尝试做什么并不完全清楚,但我可以解释一些可能有帮助的事情。

    html ID中的
  • 应该是唯一的。您不必遵守此规则以使您的页面正常工作,但如果破坏它,您会发现其中一个后果:jQuery只能找到第一个。

  • 最好将html ID基于数据的某些唯一属性,例如表格行ID。

  • 您可以使用jQuery选择器获得更多创意,例如

    $('input[type="text"]') // gets all the text inputs

  • 使用课程。当您希望能够轻松选择所有一组html元素时,您应该为它们提供相同的类名。一个元素可以有多个类名,许多元素可以共享一个类名。然后你可以使用类似的jquery按类名选择它们:

    $('.myclassname')

我认为你需要改变你的php看起来更像这样:

<span class='spryTanswer'>
  <input type='text' name='tAnswer' id='tAnswer-<?php echo $row['id'] ?>' value='<?php echo $row['testAnswer']; ?>' />
</span>

答案 1 :(得分:0)

由于您在php循环中创建元素,因此您必须确保每个元素都具有唯一ID(或根本没有id)。您可以使用递增索引或数组中的某个唯一值。乍一看,似乎$row['pID']是一个很好的候选人:

<input id='edit_<?php $row['pID'] ?>' type='submit' value='Edit' ... />

之后,您应该能够定位单个元素。