Javascript 我有一个样式化的td类,它使我的评论按钮看起来像提交
在文本区域中输入文本后,我想将这个类作为目标,让用户通过按enter键提交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 ,
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(' - ');
//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}
});
}