如何将不同的元素ID传递给同一个函数?

时间:2015-02-09 06:16:45

标签: javascript php jquery ajax

我有一个ajax函数来获取提交表单数据。我想从不同的id中获取值。为此,我为每个元素id附加唯一编号。

Before append unique value comment_input

after adding unique value comment_input_86

HTML代码:

<textarea name="comment_input" placeholder="Type comment" class="comment-input" id="comment_input_<?php echo $data['post_id']; ?>"></textarea>

这是我的ajax功能:

var elements = document.getElementsByName( 'comment_input' );
var cmt_id = elements[0].getAttribute( 'id' );

$('#'+cmt_id).on('keydown', function(event) {
    if (event.keyCode == 13){
        if (!event.shiftKey) {
            var comment = $('#'+cmt_id).val();
            var form_data = {
                comment_input : comment,
                user_Id : $('.user_Id').val(),
                post_Id : $('.post_Id').val(),
                ajax : '1'  
            };
            $.ajax({
                url: "<?php echo site_url('comment/post_comment/'); ?>",
                type: 'POST',
                async : false,
                data: form_data,
                success: function(data) {
                    $('#'+cmt_id).val('');
                    alert('#'+cmt_id);
                    location.reload();
                }
            });
        }
    }
});

在上面的函数中,我得到了元素的每个Id,并将其追加到ajax函数中。但它不起作用。任何解决方案?

2 个答案:

答案 0 :(得分:1)

您不需要使用元素ID,您可以尝试使用textarea-name属性,例如

var elements = document.getElementsByName( 'comment_input' );
var cmt_id = elements[0].getAttribute( 'id' );

$(elements).on('keydown', function(event) {
    var $this=$(this); // add this line
    if (event.keyCode == 13){
        if (!event.shiftKey) {
            var comment = $this.val(); // change here
            var form_data = {
                comment_input : comment,
                user_Id : $('.user_Id').val(),
                post_Id : $('.post_Id').val(),
                ajax : '1'  
            };
            $.ajax({
                url: "<?php echo site_url('comment/post_comment/'); ?>",
                type: 'POST',
                async : false,
                data: form_data,
                success: function(data) {
                    $this.val(''); // change here
                    alert('Changed value '+$this.value); // change here
                    location.reload();
                }
            });
        }
    }
});

答案 1 :(得分:1)

试试这个:

&#13;
&#13;
var elements = document.getElementsByName( 'comment_input' );

$(elements).each(function(){
    var cmt_id = $(this).attr('id');
    $('#'+cmt_id).on('keydown', function(event) {
        if (event.keyCode == 13){
          if (!event.shiftKey) {
                var comment = $('#'+cmt_id).val();
                var form_data = {
                    comment_input : comment,
                    user_Id : $('.user_Id').val(),
                    post_Id : $('.post_Id').val(),
                    ajax : '1'  
                };
                $.ajax({
                    url: "<?php echo site_url('comment/post_comment/'); ?>",
                    type: 'POST',
                    async : false,
                    data: form_data,
                    success: function(data) {
                        $('#'+cmt_id).val('');
                        alert('#'+cmt_id);
                        location.reload();
                    }
                });
            }
        }
    });
});
&#13;
&#13;
&#13;