How to make it so pressing enter doesn't cause the comment to post?

Allon Prooit Posted in Beginning Developers 4 years ago

Wanting to make it so that you can have multiple lines in the comments field. I have upgraded OssnComments to include a button for submitting the comments. Would like to make it so that when you press enter you get a break and can enter comments on successive lines. How do you do this? Any thoughts?

Replies
us Allon Prooit Replied 4 years ago

Many thanks for your hard work ~Z~ Man. I tried the new coding but it did not work for me. Perhaps due to a caching issue... I'm using cloudflare for my site now. So, there are no deletions? Just your additions to the code?

us Roman Lohov Replied 4 years ago

a pure <enter> is enclosing each newline into divs.

Maaaan, I spent at least 2 hour playing with that line. All I was getting is div's. Had no idea why they were showing up. I see now.

German Michael Zülsdorff Replied 4 years ago

Ok, so changing false to true lets you use enter for successive lines but doesn't put any spacing between them. How do you recode the js to put a break <br>or new line after each line of text?

Well, finally I had a little time to have a closer look ....
In opposite to <shift><enter> which is inserting a <br> into the text
a pure <enter> is enclosing each newline into divs.
That is, a text with 2 newlines will be encoded like

Line1
<div>Line2</div>
<div>Line3</div>

and since the current replacement code isn't prepared to handle a construct like that, all divs are simply removed - and Line1Line2Line3 will be submitted and saved. ;)

So far for the explanation why a simple change from false to true can't work.

Thus, to get things working as requested, we need to take extra care about the divs like

$text = $replace_tags($text, '<div>').replace(/\<div\\?>/g, "<br>");
$text = $replace_tags($text, '<br>').replace(/\<\/div\\?>/g, "<br>");

and insert these 2 lines before the old and final <br> to newline replacement

$text = $replace_tags($text, '<br>').replace(/\<br\\?>/g, '\n');

in order to achieve a reversed logic:
a simple <enter> gives a newline and <shift><enter> will save the comment

us Roman Lohov Replied 4 years ago

Allon Prooit, Naser Naser I have asked this question on stackoverflow a minute ago. Chances anyone would answer is about 1%. But who knows.

ly Naser Naser Replied 4 years ago

@MadRomas
Thank you

us Roman Lohov Replied 4 years ago

Allon Prooit that, I have no idea, as im not a JS expert. Its a question for developers or stackoverflow.

us Allon Prooit Replied 4 years ago

Ok, so changing false to true lets you use enter for successive lines but doesn't put any spacing between them. How do you recode the js to put a break <br>or new line \n after each line of text?

ly Naser Naser Replied 4 years ago

@MadRomas
Thanks for your help I wanted is how to send a comment by button

us Roman Lohov Replied 4 years ago

The thing is, to true(2 places). js/OssnComments.php

if (e.shiftKey === false)

SOPOSE TO do what you wanted to accomplish.

ly Naser Naser Replied 4 years ago

Assuming we added the button

<input type="submit" class="btn btn-comment" value="<?php echo ossn_print('comment'); ?>"/>

How will the process be done?

Premium Version

Due to the many requests in the past for additonal features and components we have decided to develope a premium version. Features like Hashtags, Videos, Polls, Events, Stories, Link Preview, etc included in it.

$199 (Life Time)
Learn More

Other Questions