スーツアップ! シンプルで簡単なWYSIWYG



この記事は3つのパートに分かれています。
UPD 批判


エントリー


それほど前ではなく、むしろ2年前に、私がコミュニケーションをとることができた開発者の輪(ほぼ全員が新参者)で、WYSIWYGのインストールを任された全員がモンスターの形をしたTinyMCEを使いました。 何らかの理由で、このエディターは多くのWeb開発者の標準と考えられていましたが、プログラマーに提供される多数の機能を必要とする人はほとんどいませんでした。 ここにこれがあります。 おそらく、この方法で、新参者はクライアントに「見て、WordをあなたのWebサイトに流し込んだ」と伝えようとしました。

一度(どのような条件下で記憶していないか)、私はブラウザーが豊富なパブリッシャーがどのように機能するかを理解したかったのです。 私自身、Web開発の深い知識がなくても、太字と斜体の2つのボタンを作成したことに驚かされました。これは非常に簡単な作業でした。 次に何をすべきかについてもっと知りたかった。 そのため、「ブラウザーでのWYSIWYG HTMLエディター」という一連の記事に精通しました(最初の記事はこちらです。必ずお読みください)。 しかし、当時の情報は私には少し複雑に思えました。 したがって、私は入力して、誰かに既に踏みつけられた熊手を踏んで、簡単なエディターを書くことにしました。

jQueryプラグインの形式で作成しましたが、「なぜ」と答えるべきではないと思います。 どういうわけか別のブラウザで動作するようになりました。 その後、いくつかの改善を経て、Habrについての記事を書くというアイデアが浮かびました。 時間の経過、私は仕上げを延期し、延期します... 2年、地獄、2年。 しかし、私は自分自身を修正しようとします。


最もシンプルなエディター


ユーザーがブロックの内容(この場合、通常の歌姫)を変更できるようにするために、単純にcontenteditable属性をユーザー(ブロック)に設定します。
<div contenteditable></div> 

エディターの準備ができました!

冗談です:)

テキストを変更する(たとえば、フォントの色を設定する)ために、現在の選択またはキャレットの位置に適用されるdocument.execCommandメソッドがあります。 このメソッドは3つの引数を取ります。
  1. コマンドの名前(例えば、斜体)。
  2. 値を取得するために標準ダイアログを表示するかどうか(定義が正しくない場合は正しい)。 原則として、誰もこれを使用しないため、値は常にfalseになります。
  3. コマンドの値。


ページに太字ボタンを追加して、テキストを太字にします。
 <button class="bold"></button> 

最も単純なクリックハンドラを記述します。
 $( '.bold' ).on( 'click', function() { document.execCommand( 'bold', null, null ); }); 

できた 歌姫のテキストを選択し、ボタンを押します:op、テキストは太字です。 もう一度クリックしてください。ホバ、テキストは同じになりました。

さらに2つのボタンを追加する
 <button class="italic">italic</button> <button class="red">Red</button> 

1つ目はテキストを斜めにします(アフリカではイタリック体であるため太字のように値は不要です)、2つ目はテキストの色を赤に変更します。

 $( '.italic' ).on( 'click', function() { document.execCommand( 'italic', false, null ); }); $( '.red' ).on( 'click', function() { document.execCommand( 'forecolor', false, 'red' ); }); 


当然ながら、 forecolorコマンドは値なしでは実行できません。そうしないと、ブラウザーはテキストにどの色を設定すべきかを理解できません。

結果: jsfiddle.net/6BkPu

それだけです、今では小さなものです:
1. .innerHTML歌姫を取り、それを使って何でもします:サーバーに送信する、 textareaに貼り付けるなど。
2.同様に、 このリンクを参照できるコマンドをさらに追加します。
3.アイコンを追加して、フォントを操作します。

ボタンを強調表示する(コマンドの現在の値を確認する)には、 document.queryCommandValueおよびdocument.queryCommandStateメソッドが使用されます。 ブラウザに依存するため、それらの動作については説明しません。 例外をスローするかどうかを決定するのはブラウザーの製造者のみであり、何を返すかはブラウザーの製造者のみが決定するため、必要に応じて、何が何であるかを把握することをお勧めします。 基本的に、pokeメソッドを処理する必要があります。

根拠がないように、例を挙げます。
document.queryCommandValue( 'formatblock' ) document.execCommand( 'formatblock', ... )が三角括弧で囲まれているにもかかわらず、FFおよびChromeのdocument.queryCommandValue( 'formatblock' )は次の値を返します: h1, h2, p ...:

, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.

, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.

, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.

, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
 , ,     IE,        execCommand( 'formatblock' ... )   .   :     " ",       .   IE...    ?..     queryCommandValue( 'formatblock' )  " 1", " 2", "" , .     , , , ,         .     ,    IE10. ,  ,    IE10!     ,           ,     . 


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.
, , IE, execCommand( 'formatblock' ... ) . : " ", . IE... ?.. queryCommandValue( 'formatblock' ) " 1", " 2", "" , . , , , , . , IE10. , , IE10! , , .


SuitUp

, , , , , ---, . , .

:)

, :
$( '.my-textarea' ).suitUp();
:
$( '.my-textarea' ).suitUp( 'italic', 'bold', '|', 'formatblock#<h1>' );

$( '.my-textarea' ).suitUp([ 'italic', 'bold', '|', 'formatblock#<h1>' ]);

«|» , . , , , , — . _#, . — , , , . , , , null. .

( )
jQuery.suitUp.commands, - ( ), , , 'forecolor', :

1. , : forecolor red:
$.suitUp.commands = { forecolor: 'red' }

$.extend( jQuery.suitUp.commands, { forecolor: 'red' })

$.suitUp.commands.forecolor = 'red' // ( , commands - )
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );
2. ()
$.suitUp.commands.forecolor = { 'Make Red': 'red', 'Make Green': 'green' }
select, , .

:
$( '.suitup-textarea' ).suitUp( 'forecolor' );


3. , , . , , . propmt:

jQuery.suitUp.commands.forecolor = function( callback ) { var color = prompt( ' ', '' ); // callback( color ); // }
:
$( '.suitup-textarea' ).suitUp( 'forecolor' );

, — , , . , suitUp :
$( 'textarea' ).suitUp( 'italic', 'bold', '|', 'link', 'formatblock#<h1>' );
. . , :
1. Bold.
2. .
3. , "".

, .

$.extend( $.suitUp.commands, { bold: null, // , null fontname: { Arial: 'arial', Times: 'times', Verdana: 'verdana' }, forecolor: function( callback ){ var blackBackground = $( '<div/>' ).css({ background: 'black', position: 'absolute', top: 0, left:0, opacity: .5, width: '100%', height: '100%' }).on( 'click', function(){ popup.add( this ).remove(); }).appendTo('body'), popup = $( '<div/>' ).css({ padding: '10px 20px', width: 200, position: 'absolute', background: 'white', top: 200, left: $( window ).width()/2 - 110, zIndex: 100 }).appendTo('body'); $( '<input/>' ).appendTo( popup ); $( '<button/>' ).appendTo( popup ).text( 'Go!' ).on( 'click', function() { var val = popup.children( 'input' ).val(); blackBackground.add( popup ).remove() callback( val ); }); } });


$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor' );







, , . , button. , , callback, . Callback , , forecolor .

document.execCommand( 'forecolor', false, ' ' );
! , camelCase, , . .


, . , , .

, :
$.suitUp.custom = {};
, .

$.extend( jQuery.suitUp.custom, { helloWorld: function() { return $( '<span/>', { 'class': 'suitup-control' // }).css( 'backgroundColor', 'red' ).on( 'click', function() { alert( 'Hello World!' ); }); } });

:
$( '.suitup-textarea' ).suitUp( 'bold', 'fontname', 'forecolor', 'helloWorld' );


, .

, "link", ( "createlink"), ( "unlink").

... { link: function() { return jQuery._createElement( 'a', { className: 'suitup-control', href: '#' }).attr({ 'data-command': 'createlink' // createlink }).on( 'click', function() { if( !$.suitUp.hasSelectedNodeParent( 'a' ) ) { document.execCommand( 'createlink', false, window.prompt( 'URL:', '' ) ); } else { document.execCommand( 'unlink', false, null ); } }); } }
, ( helloWorld), .

:
suitUp ( commands), null. ( forecolor#red ) :
. . , "" (, - colorpicker).
suitUp.
.


suitUp :
$.suitUp.controls = [ 'bold', 'italic' ]; $( '.suitup-textarea' ).suitUp(); // , $( '.suitup-textarea' ).suitUp( 'bold', 'italic' );
controls , . . , :

$.suitUp.controls.push( 'forecolor' ); $( '.suitup-textarea' ).suitUp();
:
$( '.suitup-textarea' ).suitUp( $.suitUp.controls.concat([ 'forecolor' ]) ); , ( ).


, , , $.suitUp . , . , , .

$.suitUp.getSelection
. .

$.suitUp.restoreSelection
. , getSelection.

var sel = $.suitUp.getSelection(); // -, $( '.suitup-editor' ).focus(); // jQuery.suitUp.restoreSelection( sel ); //

$.suitUp.getSelectedNode
( )

$.suitUp.hasSelectedNodeParent
, "link". , , .
jQuery.suitUp.hasSelectedNodeParent( 'a' ); // true/false

Chrome, Firefox, IE10 (+IE7 Mode)
, : github.com/finom/Suitup

extended-commands.suitup.jquery.js . 50 , .



, .

.

UPD


, , . , , .
1. . , bold Chrome b, IE strong.
2. ( ).
3. , . , .

— . , , , . , , . — .

.

Source: https://habr.com/ru/post/J161715/


All Articles