单击(循环值)时如何获取值?

时间:2013-09-05 02:08:22

标签: php javascript jquery

我正在创建从数据库中获取值的网页,将显示几个值。在每个值上,它将具有textarea和下面的按钮Tweet。我想当用户点击按钮推文时,它会从该按钮上方的textarea中捕获值。现在,当用户点击按钮Tweet(所有按钮)时,它将仅捕获第一个textarea的值。

这是我的代码

PHP

while($row=mysql_fetch_array($sql)){
    echo "<textarea style='margin-bottom:10px;' id='text_tweet' name='text_tweet' 
    cols='61' rows='5'></textarea>";
    echo "<a style='text-decoration: none; color: #000000;' id='tweet'
          href='#'>Tweet</a>";
}

的Javascript

$("#tweet").bind('click', function(){
var text_tweet = $("#text_tweet").val();
if(text_tweet==""){
    alert("Please fill out something");
}
else{
    save_tweet(text_tweet);
}
});

任何人都可以帮我解决这个问题吗?

提前感谢。

2 个答案:

答案 0 :(得分:2)

您需要区分正在循环的每一行。假设$rowid

,这是另一种方法

PHP

while ($row = mysql_fetch_array($sql)) {
    echo "<textarea style='margin-bottom:10px;' id='text_tweet_" . $row['id'] . "' name='text_tweet_" . $row['id'] . "' cols='61' rows='5'></textarea>";
    echo "<a onclick='doSomething(" . $row['id'] . ")' style='text-decoration: none; color: #000000;' id='tweet_" . $row['id'] . "' href='#'>Tweet</a>";
}

JS

function doSomething(id) {
    var text_tweet = $("#text_tweet_" + id).val();
    if (text_tweet == "") {
        alert("Please fill out something");
    } else {
        save_tweet(text_tweet);
    }
}

答案 1 :(得分:0)

首先,如果您要尝试在页面上抓取多个元素,则不能使用id作为单个元素保留的元素 - 您永远不应该使用多个元素相同的id

首先,我会更改它,以便每个元素都有一个名为'tweet'的类。您还需要在其周围添加jQuery $(function(){})。该函数告诉浏览器在页面和所有元素都已完全加载之前不要运行该JavaScript。

我还要确保在两个元素周围添加一个容器,这样可以更方便地实际抓取链接旁边的textarea。

以下是我将如何处理它:

while($row=mysql_fetch_array($sql)){
    echo "<div>";
    echo "<textarea style='margin-bottom:10px;' id='text_tweet' name='text_tweet' 
    cols='61' rows='5'></textarea>";
    echo "<a style='text-decoration: none; color: #000000;' class='tweet'
          href='#'>Tweet</a>";
    echo "</div>";
}

然后是javascript:

$(function() {

$(".tweet").bind('click', function(){
var text_tweet = $(this).parents('div:first').find("textarea").val();
if(text_tweet==""){
    alert("Please fill out something");
}
else{
    save_tweet(text_tweet);
}
});

});

我们$(this).parents('div:first').find("textarea").val()的原因是因为我们想要只包含div中的textarea;否则,jQuery将获取数组中的第一个textarea值。