在textarea中输入文字后,我想以此类为目标,让用户按回车即可提交。
cmnt += '<td class="cmnt_save" data-id="' + id + '">Save Comment</td>';
我尝试过的所有东西都失败了......我尝试过使用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!');
}
})
}
如果有人可以帮助完成此任务,或者只是推荐其他/更好的方法来正确使用此功能。在此先感谢您的帮助。
答案 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>