@@ -101,6 +101,41 @@ jQuery(document).ready(function($) {
101101
102102 // Handler before submitting
103103 $ ( frm ) . triggerHandler ( 'BeforeDiscussionSubmit' , [ frm , btn ] ) ;
104+ var maxCommentLength = $ ( frm ) . find ( 'input:hidden[name$=MaxCommentLength]' ) ;
105+ var defaultValues = [
106+ undefined ,
107+ null ,
108+ '' ,
109+ '[{\"insert\":\"\\n\"}]'
110+ ] ;
111+
112+ var editorContainer = $ ( frm ) . find ( '.EasyMDEContainer' ) ;
113+ var messageContainer = $ ( frm ) . find ( '.editor-statusbar .message' ) ;
114+ var textbox = $ ( frm ) . find ( 'textarea#Form_Body' ) ;
115+ var currentVal = $ ( textbox ) . val ( ) ;
116+ currentVal = gdn . normalizeText ( currentVal ) ;
117+ if ( defaultValues . includes ( currentVal ) || currentVal . trim ( ) . length == 0 ) {
118+ $ ( editorContainer ) . addClass ( 'error' ) ;
119+ $ ( messageContainer ) . text ( 'Cannot post an empty message' ) ;
120+ $ ( frm ) . find ( ':submit' ) . attr ( 'disabled' , 'disabled' ) ;
121+ $ ( frm ) . find ( '.Buttons a.Button:not(.Cancel)' ) . addClass ( 'Disabled' ) ;
122+ return false ;
123+ }
124+
125+ if ( currentVal . length > maxCommentLength . val ( ) ) {
126+ $ ( editorContainer ) . addClass ( 'error' ) ;
127+ var count = currentVal . length - maxCommentLength . val ( ) ;
128+ $ ( messageContainer ) . text ( 'Discussion is ' + count + ' characters too long' ) ;
129+ $ ( frm ) . find ( ':submit' ) . attr ( 'disabled' , 'disabled' ) ;
130+ $ ( frm ) . find ( '.Buttons a.Button:not(.Cancel)' ) . addClass ( 'Disabled' ) ;
131+ return false ;
132+ }
133+
134+ $ ( editorContainer ) . removeClass ( 'error' ) ;
135+ $ ( messageContainer ) . text ( '' ) ;
136+ $ ( frm ) . find ( ':submit' ) . removeAttr ( "disabled" ) ;
137+ $ ( frm ) . find ( '.Buttons a.Button' ) . removeClass ( 'Disabled' ) ;
138+
104139
105140 var inpDiscussionID = $ ( frm ) . find ( ':hidden[name$=DiscussionID]' ) ;
106141 var inpDraftID = $ ( frm ) . find ( ':hidden[name$=DraftID]' ) ;
0 commit comments