我有一个样式的td类,使我的评论按钮看起来像一个提交

时间:2013-11-06 00:17:02

标签: javascript jquery html css

在textarea中输入文字后,我想以此类为目标,让用户按回车即可提交。

cmnt += '<td class="cmnt_save" data-id="' + id + '">Save Comment</td>';

I would like to Target the Save comment td class using jquery

我尝试过的所有东西都失败了......我尝试过使用jquery,JS和一些内联JS。

这是我的表格功能:

// This function retrieves comments
function get_comments(id ,afterCtl ,ctl) {
    var cmnt = '';

show_loading('.loading_box');

// Create the new row in the database - ajax returns json version.
var add_url = '/ajax/project_comment_list.php?id=' + id;

var slot = $.getJSON(add_url)
    .done(function(data) {
        // Draw the entire comment-block then display it

        cmnt = '<tr class="cmnts">';
        cmnt += '    <td colspan="11">';
        cmnt += '        <table>';
        cmnt += '            <tr class="cmnt_add">';
        cmnt += '                <td class="cmnt_text">'
        cmnt += '                    <input type="text" id="cmnt_new" name="cmnt_new" rows="1">';
        //cmnt += '                    <textarea id="cmnt_new" name="cmnt_new" rows="1"></textarea>';
        cmnt += '                </td>';
        cmnt += '                <td></td>';
        cmnt += '                <td></td>';
        cmnt += '                <td class="cmnt_save" data-id="' + id + '">Save Comment</td>';
        cmnt += '            </tr>';

        $.each(data.ProjectComments, function (index, value) {
            cmnt += add_comment_row(value.TEXT ,blank_if_undefined(value.EMP_INIT) ,value.ENTER_DATE);
        });

        cmnt += '        </table>';
        cmnt += '    </td>';
        cmnt += '</tr>';

        remove_comments(ctl);

        $(afterCtl).after(cmnt);
        $('#cmnt_new').focus();

        $(ctl).addClass('cmnt_active');
        $(ctl).html('&nbsp;-&nbsp;');

        //register the event
        $('td.cmnt_save').click(function(){
            add_comment($(this));
        });

        comment_shown = id;
    })
    .fail(function(jqxhr, status, error) {
        hide_loading('.loading_box');
        show_error('There was an error pulling the comments.');
    });

    //wire up the event
    $('textarea#cmnt_new').keydown(function(e) {
        if(e.which == 13) {
            e.preventDefault();
            alert('Cripes!  You pressed enter!');
        }
    })

}

如果有人可以帮助完成此任务,或者只是推荐其他/更好的方法来正确使用此功能。在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

文本字段的ID是什么? #cmnt_new

$('#static-parent').on('keyup', '#cmnt_new', function(ev){ 
    if(e.keyCode == 13)
    {
        // do whatever here
    }
});

其中#static-parent是未动态加载的内容,#cmnt_new位于其中(父级)。我相信你甚至可以做$(document).on(..。要使脚本处理动态加载的内容,您必须使用委托并在页面上浏览静态内容。

答案 1 :(得分:1)

如果我理解正确,您只想在用户点击相对文本区域中的回车键后保存用户添加的注释。

我想你想要这样的东西:http://jsfiddle.net/5JKy8/2/

HTML

<table id="comments">
    <tr>
        <th>Name</th>
        <th>Comment</th>
    </tr>
    <tr>
        <td>Foo</td>
        <td><textarea class="comment" rows="1" id="333"></textarea></td>
    </tr>
    <tr>
        <td>Bar</td>
        <td><textarea class="comment" rows="1" id="666"></textarea></td>
    </tr>                
</table>

的Javascript

$(document).ready( function() {

    $("body").on("keydown",".comment", function(e) {
        if(e.which == 13) {            
            var comment = $(this).val(),
                id = $(this).data("id");

            saveComment(comment,id).done( function() {
                $(this).parent("td").text(comment);
            });
        }
    });    

});

function saveComment(comment,id) {
    return $.ajax({
        url: 'yourScript.php',
        data: {comment:comment,id:id}
    });
}

注意:在jsfiddle中,saveComment()返回一个布尔值用于演示目的,但只使用注释掉的代码。

答案 2 :(得分:0)

使用事件对象的keyCode属性onkeyup。输入按钮为event.keyCode === 13,例如:

$('#cmnt_new').keyup(function(e){
  if(e.keyCode === 13){
    // do your thing here
  }
});

请注意,您已将<input type='text' /></textarea>合并。{/ p>