设置div唯一ID

时间:2016-04-12 14:21:03

标签: javascript php jquery ajax

我正在回应数据库中的注释,echo看起来像这样:

echo $status->comment.'

        <textarea id="'.$status->id.'"></textarea>

';

现在我有了这段代码:

<script type="text/javascript">
    $(document).ready(function() {

        $('#'+'<?php echo $status->id;?>').keypress(function(event) {

            var key = (event.keyCode ? event.keyCode : event.which);
            if (key == 13) {

                var comment = $('#' + '<?php echo $status->id;?>').val();
                var status = '<?php echo $status->id;?>';

                $.ajax({
                        method: "POST",
                        url: "file.php",
                        data: {status: status, comment: comment},
                        success: function(status) {
                        }
                    });
            };
        }); 
    });
</script>

它不起作用......但是当我将id设置为像评论这样的名字并将它放在这样的地方时:

<textarea id="comment"></textarea>

 $('#comment').keypress(function(event) {

var comment = $('#comment').val();

它有效,但仅适用于数据库中的第一行,如果我有3个帖子,帖子ID为12,17,33。 而且我正在评论帖子ID为33它保存值只发布到id为12的那个... 有什么帮助吗?

更新:

我正在使用foreach,对于数据库中的每个帖子,我都在回应:

echo "<div id='spacer'></div><div id='statusess' style='background: rgba(255,255,255,0);'><div id='pader' style='background-color:".$statuscolor.";'><div id='statuses' style='background: rgba(255,255,255,0.5);'><div id='rod'><a href='d/".$page."?fromid=".$frid."&toid=".$status->fromid."&forid=".$status->id."'>$rord</a></div> <a href='profile.php?u=".$status->fromid."'> <img src='../juzer/".$status->fromid."/profile/".$status->profilepic."'width='30px' height='30px'> ".$status->fromname."</a><br />".$status->text."<br /><br /><a href='d/npostlikes.php?u=".$frid."&type=status&id=".$status->id."'><img src='d/likes/like.png' width='20px' height='20px'></a>".$count."<textarea id='comm1_".$status->id."'  name='comm1'   onkeyup='textAreaAdjust(this)' style=' resize: none; width: 300px; height: auto; '></textarea>";

回声的结束是我的问题,问题在于,当我按下键时,它只保存到数据库的第一个帖子ID来自posts数据库。所以基本上我想说的是它存储的每条评论只作为帖子数据库中的第一篇帖子的评论...所以我想将每个textarea的id添加为唯一所以当ssomeone按键时它会保存到该id而不是第一个仅....

3 个答案:

答案 0 :(得分:0)

尝试在Javascript中使用PHP构建选择器时,你做错了。

这:

$('#'+'<?php echo $status->id;?>')...

应该是:

$('#<?php echo $status->id;?>')...

您还应该在ID中添加一些字符串,以避免与具有类似ID的其他元素发生冲突。例如:

$('#comment_<?php echo $status->id;?>')...
编辑:我误读了你问题的最后一部分,显然我只是部分回答了问题。如果您可以发布更多代码,那么剩下的会更好,所以我可以提供更好的帮助。

答案 1 :(得分:0)

将评论包含在div中:

<div id="commentsDiv"></div>

有了这个,事件处理程序可以很容易地附加到动态生成的元素。下面的脚本应该适合你。

<script type="text/javascript">

$(document).ready(function() {
 $("textarea").keypress(function(event) {

    var commentId = $(this).prop('id').split("_")[1];

    var key = (event.keyCode) ? event.keyCode : event.which;

    if (key == 13) {
        var comment = $('#'+commentId).val();

        var status = commentId;

        $.ajax({
            method: "POST",
            url: "file.php",
            data: {status: status, comment: comment},
            success: function(status) {}
        });
    }

    else{
        alert("Code of key pressed is: " + key);
    }
 }); 

});
</script>

注意:不要忘记删除警报。

答案 2 :(得分:0)

ID不能只是一个数值。

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

也可以尝试这种方式来获得正确的textarea ID

$("textarea").keypress(function(event) {
  // get the id 
  currentId = $(this).prop('id');
  // your code
});