I’ve tried this jquery code but to no avail.
[CODE]$(‘.cmnt_new’).on(‘keyup’, function(e) {
if (e.which == 13 && ! e.shiftKey) {
alert(“send ajax”);
}
});
Here’s my functions, inside the textarea “cmnt_new” I’m using straight javascript and it allows me to use the enter key to trigger a comment although it’s not publishing my comment. It just refreshes and than nothing.
Here:
[CODE]// 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″></textarea>’;
cmnt += ‘ <textarea id=”cmnt_new” name=”cmnt_new” rows=”1″ onkeydown=”if (event.keyCode == 13) { this.form.submit(); return false; }”></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.’);
});
}
function add_comment_row(text ,init ,dt) {
var cmnt = ”;
cmnt += ‘ <tr>’;
cmnt += ‘ <td class=”cmnt_text”>’ + text + ‘</td>’;
cmnt += ‘ <td>’ + init + ‘</td>’;
cmnt += ‘ <td>’ + dt + ‘</td>’;
cmnt += ‘ <td></td>’;
cmnt += ‘ </tr>’;
return cmnt;
}
function add_comment(ctl) {
//todo: remove carriage returns
//todo: recognize carriage return as clicking the “Save Comment” faux-button
var cmnt = ”;
show_loading(‘.loading_box’);
// Create the new row in the database – 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();
// find the “cmnt_last” that should change if this AJAX call is successful…
var lastCmnt = ctl.closest(‘tr.cmnts’).prev().find(‘span.cmnt_last’);
var slot = $.getJSON(add_url)
.done(function(data) {
// Draw the entire comment-block then display it
cmnt = add_comment_row(
data.LatestComment.TEXT
,data.LatestComment.EMP_INIT
,data.LatestComment.ENTER_DATE
);
lastCmnt.text($(‘#cmnt_new’).val());
//todo: de-register the “expander” that might alredy be in place for the “.long_cmnt”
lastCmnt.expander(‘destroy’);
//todo: stop duplicating the call to “expander”, at very least, do this: “$.expander.defaults.slicePoint = 120;”
lastCmnt.expander({
slicePoint: 70,
expandText: ‘ >>>’,
userCollapseText: ‘ <<<‘
});
$(‘tr.cmnt_add’).after(cmnt);
$(‘#cmnt_new’).val(”); //blank the comment
$(‘#cmnt_new’).focus(); //put the cursor back there
$(ctl).addClass(‘cmnt_active’);
})
.fail(function(jqxhr, status, error) {
hide_loading(‘.loading_box’);
show_error(‘There was an error adding the comment.’);
});
}
Any help would be greatly appreciated. Thank you.