0

我正在创建从数据库中获取值的网页,将显示几个值。在每个值上,它将在下面有 textarea 和按钮 Tweet。我希望当用户单击按钮推文时,它会从该按钮上方的 textarea 中捕获值。目前,当用户单击按钮 Tweet(所有按钮)时,它将仅捕获来自第一个文本区域的值。

这是我的代码

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);
}
});

谁能帮我解决这个问题?

预先感谢。

4

2 回答 2

2

您需要区分循环出的每一行。这是另一种方法,假设$row有一个id.

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);
    }
}
于 2013-09-05T02:15:45.347 回答
0

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

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

我还会确保在这两个元素周围添加一个容器,这将使您更容易实际抓取链接旁边的文本区域。

这是我将如何处理它:

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 的文本区域;否则,jQuery 将获取数组中的第一个 textarea 值。

于 2013-09-05T02:20:04.333 回答