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

Javascript 我有一个样式化的td类,它使我的评论按钮看起来像提交,javascript,jquery,html,css,Javascript,Jquery,Html,Css,在文本区域中输入文本后,我想将这个类作为目标,让用户通过按enter键提交 cmnt += '<td class="cmnt_save" data-id="' + id + '">Save Comment</td>'; cmnt+=“保存注释”; 我所做的一切都失败得很惨。。我也尝试过使用jquery、JS和一些内联JS 以下是我的表格功能: // This function retrieves comments function get_comments(id ,

在文本区域中输入文本后,我想将这个类作为目标,让用户通过按enter键提交

cmnt += '<td class="cmnt_save" data-id="' + id + '">Save Comment</td>';
cmnt+=“保存注释”;

我所做的一切都失败得很惨。。我也尝试过使用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!');
        }
    })
//此函数用于检索注释
函数获取注释(id、afterCtl、ctl){
var cmnt='';
显示加载(“加载框”);
//在数据库中创建新行-ajax返回json版本。
var add_url='/ajax/project_comment_list.php?id='+id;
var slot=$.getJSON(添加url)
.完成(功能(数据){
//绘制整个注释块,然后显示它
cmnt=“”;
cmnt+='';
cmnt+='';
cmnt+='';
cmnt+=''
cmnt+='';
//cmnt+='';
cmnt+='';
cmnt+='';
cmnt+='';
cmnt+=“保存注释”;
cmnt+='';
$.each(data.ProjectComments,函数(索引,值){
cmnt+=添加注释行(value.TEXT,如果未定义(value.EMP\u INIT),则为空,输入日期);
});
cmnt+='';
cmnt+='';
cmnt+='';
删除注释(ctl);
$(afterCtl)。after(cmnt);
$('cmnt_new').focus();
$(ctl.addClass('cmnt_active');
$(ctl.html('-');
//注册活动
$('td.cmnt_save')。单击(函数(){
添加注释($(此));
});
注释_显示=id;
})
.失败(功能(jqxhr、状态、错误){
隐藏加载(“加载框”);
show_error('提取注释时出错');
});
//把这件事联系起来
$('textarea#cmnt_new').keydown(函数(e){
如果(e.which==13){
e、 预防默认值();
警报('Cripes!你按了enter!');
}
})
}


如果有人能帮助完成此任务,或者只是推荐其他/更好的方法来正确实现此功能。提前感谢您的帮助。

使用事件对象的
keyCode
属性
onkeyup
<对于enter按钮,code>event.keyCode===13,如:

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

请注意,您已将

文本字段的ID组合在一起关闭它<代码>#cmnt_新建

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

其中,
#静态父对象
是未动态加载的对象,
#cmnt#u new
位于其内部(父对象)。我相信您甚至可以在(..)上执行
$(文档)。要让脚本处理动态加载的内容,您必须使用代理并在页面上执行一些静态操作。

如果我理解正确,您只需保存用户在相对文本区域中按enter键后添加的注释

我想你想要这样的东西:

HTML


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

我尝试过类似的方法,但我甚至无法让它发出警报。
$('.cmnt_new')。on('keyup',function(e){if(e.which==13&&!e.shiftKey){alert(“send ajax”);}
它是
文本区域
吗?我不这么认为。另外,
.cmnt\u new
将是
类名
而不是id,你会使用
符号来表示。去掉关闭的
文本区域
标记。已修复,但仍然没有任何内容。感谢您注意到……仍然没有任何内容。应该怎么做?
添加注释()
?在该函数中有
$('this')
,它将引用元素本身,而不是
$('cmnt_new')
$('textarea#cmnt_new')
仍然是无效代码。此外,您应该用关键字
var
声明变量,否则它们是全局变量。
函数添加注释(ctl){//todo:remove carries returns//todo:recognize carries returns as click“Save Comment”人造按钮var cmnt='';show_loading('.loading_box');//在数据库中创建新行-ajax returns json version.var add_url='/ajax/project_Comment_new.php';add_url+='?id='+ctl.attr('data-id'));add#url+='&text='+$('#cmnt_new').val();add#url+='&emp_init='+$('#emp_init').val();
<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>
$(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}
    });
}