/    Sign up×
Community /Pin to ProfileBookmark

When entering text in a comment form; I would like to use the enter key to submit.

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”);
}
});[/CODE]

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(‘&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.’);
});
}

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.’);
});
}[/CODE]

Any help would be greatly appreciated. Thank you.

to post a comment
JavaScript

1 Comments(s)

Copy linkTweet thisAlerts:
@SupplementauthorNov 05.2013 — The javascript works sort of but it's not actually processing my data.<textarea id="cmnt_new" name="cmnt_new" rows="1" onkeydown="if (event.keyCode == 13) { this.form.submit(); return false; }"></textarea>';

I just realized my submit button was targeting the wrong button and my actual button that i need to target is just a styled div... can anyone please help. i tried using the comment function in place of the this.form.submit... like so: this.form.add_comment(); no avail.
×

Success!

Help @Supplement spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 6.17,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @nearjob,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,

tipper: @meenaratha,
tipped: article
amount: 1000 SATS,
)...