jQuery只为第一个textarea而不是其他人提取价值

时间:2018-02-04 04:42:53

标签: javascript jquery html ajax

我有多个textarea具有相同的类但不同的ID& data-ref供我自己参考。 我使用以下jQuery脚本来获取keypress上的数据(输入)

$(document).ready(function(){

     $(document).on('keypress', '.comment-text',function(e){

        var key = e.which;
        if(key == 13)
        {
           e.preventDefault();
           var post_id = $(".comment-text").data('ref');
           var comment_text = $("#comment" + post_id).val();
       // or i can use the var comment_text = $(".comment-text").val();
       //both gives the same result
           console.log(comment_text);
           if(comment_text.replace(/(^\s+|\s+$)/g, '') === '')
           {
             $('.comment-text').val('');
             $('.comment-text').blur();
           }     
           else 
       {
        $("#no-comment").hide('fast');
        $('ul.post-id-'+ post_id).prepend('<li class="list-group-item"><a   href="/username/" class="text-dark"><b>username</b></a> '+ comment_text +' <span class="text-muted">Just Now</span></li>');
       $('.comment-text').val('');
       $('.comment-text').blur();
     return false; // Just a workaround for old browsers
           }


        }


      });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="comment-write">
   <ul class="list-group post-id04">


    <li id="#no-comment">No Comment Yet</li>
   </ul>
</div>

<textarea class="comment-text" data-ref="04" id="comment04" placeholder="Enter comment.."></textarea>

但它仅适用于第一个textarea,不适用于多个/动态输入。

1 个答案:

答案 0 :(得分:3)

使用$(this)代替类名来获取当前的 textarea 值。更改您的代码如下:

$(document).ready(function(){

     $(document).on('keypress', '.comment-text',function(e){

        var key = e.which;
        if(key == 13)
        {
           e.preventDefault();
           var post_id = $(this).data('ref');
           var comment_text = $(this).val();
       // or i can use the var comment_text = $(".comment-text").val();
       //both gives the same result
            console.log(comment_text);
           if(comment_text.replace(/(^\s+|\s+$)/g, '') === '')
           {
             $(this).val('');
             $(this).blur();
           }     
           else 
       {
        $("#no-comment").hide('fast');
        $('ul.post-id-'+ post_id).prepend('<li class="list-group-item"><a   href="/username/" class="text-dark"><b>username</b></a> '+ comment_text +' <span class="text-muted">Just Now</span></li>');
       $(this).val('');
       $(this).blur();
     return false; // Just a workaround for old browsers
           }


        }


      });

});