0

基本的に、編集を容易にするためにテキストエリアに TinyMCE を使用し、誰かがこの JS を作成して、テキストエリアを 255 文字にするようにしました。

唯一の問題は、セットされたテキストエリアではなく、含まれているページ上のすべてのテキストエリアに影響することです。私は JS を知らないので、ウィザードの 1 人が、影響するテキストエリアを設定できる場所を追加するように案内してくれるかどうか迷っています。

<script type="text/javascript" src="/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
        mode : "textareas",
        theme : "advanced",
        plugins : "bbcode",
        theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,styleselect,removeformat,cleanup,code",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_toolbar_location : "bottom",
        theme_advanced_toolbar_align : "center",
        theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
    theme_advanced_resizing : true,
    theme_advanced_path : false,
        content_css : "css/bbcode.css",
        entity_encoding : "raw",
        add_unload_trigger : false,
        remove_linebreaks : false,
        inline_styles : false,
        forced_root_block : '',
        convert_fonts_to_spans : false,
        theme_advanced_statusbar_location : "bottom",
    setup: function(ed) {
        ed.onKeyUp.add(function(ed, e) {
        // What is the max amount of characters you want
        var maxChars = 255;
        var content = tinyMCE.activeEditor.getContent();
        // Remove any BBCode tags from the count
        var strip = content.replace(/\[\/?(?:b|i|u|url|quote|code|img|color|size)*?.*?\]/img, '');
        // Set the text for what we want to display in the status bar
        var text = strip.split(' ').length + " Words, " + strip.length + " Characters"
        // Show the status bar message
                tinymce.DOM.setHTML(tinymce.DOM.get(tinyMCE.activeEditor.id + '_path_row'), text);
        // Is there more Characters than we want
        if (strip.length > maxChars) 
        {
            // Show an alert (can comment out)
            alert("Sorry too many characters "  + strip);
            // Get all characters up to the limit
            cur = strip.substring(0,maxChars);
            // Replace content with the max amount
            tinyMCE.activeEditor.setContent(oldContent);
        }

        else
        {
            oldContent = content;

        }

            });

        }
});
4

3 に答える 3

2

あなたがする必要があるのは

//find the id of the currently active editor
var editor_name=tinyMCE.activeEditor.editorId;

それから

//provide regex for list of editors to be matched
var editors_to_be_matched = /first_editor|third_editor/;

探す

//if active editor matches against the list of editors
var matched = editor_name.match(editors_to_be_matched);

もしも

//active editor does not matches return
if(!matched) return;

そうしないと

//do character count stuff
your code here

これがあなたの場合の様子です

 ed.onKeyUp.add(function(ed, e) {
    var editor_name =tinyMCE.activeEditor.editorId;
    var editors_to_be_matched = /first_editor|third_editor/;
    var matched = editor_name.match(editors_to_be_matched);

    if(!matched) return;
    alert("Do character count stuff here");
    // your code here


    // What is the max amount of characters you want
    var maxChars = 255;
    var content = tinyMCE.activeEditor.getContent();
    ........
    ..........

        });

これがデモです

于 2012-12-28T06:48:09.173 に答える
1

tinymce を一部のテキストエリアでのみ動作させるには、モードを「exact」に変更し、次のように要素パラメーターで html 要素 ID を指定する必要があります。

tinyMCE.init({
        mode : "exact",
        elements : "elm1,elm2",
});

tinymce モードの詳細については、http ://www.tinymce.com/wiki.php/Configuration:mode を参照してください。

于 2012-12-27T20:37:26.553 に答える
0

ここの表示名は新しいコードです。確認していただけますか :)、私はそれが正しいと思います。

<script type="text/javascript" src="/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
        mode : "textareas",
        theme : "advanced",
        plugins : "bbcode",
        theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,styleselect,removeformat,cleanup,code",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_toolbar_location : "bottom",
        theme_advanced_toolbar_align : "center",
        theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
    theme_advanced_resizing : true,
    theme_advanced_path : false,
        content_css : "css/bbcode.css",
        entity_encoding : "raw",
        add_unload_trigger : false,
        remove_linebreaks : false,
        inline_styles : false,
        forced_root_block : '',
        convert_fonts_to_spans : false,
        theme_advanced_statusbar_location : "bottom",
    setup: function(ed) {
        ed.onKeyUp.add(function(ed, e) {
        // What is the max amount of characters you want
        var maxChars = 255;
        var content = tinyMCE.activeEditor.getContent();
        var editor_name = tinyMCE.activeEditor.editorId;
        var editors_to_be_matched = /tagline/;
        var matched = editor_name.match(editors_to_be_matched);

        if(!matched) return;

        // Remove any BBCode tags from the count
        var strip = content.replace(/\[\/?(?:b|i|u|url|quote|code|img|color|size)*?.*?\]/img, '');
        // Set the text for what we want to display in the status bar
        var text = strip.split(' ').length + " Words, " + strip.length + " Characters"
        // Show the status bar message
                tinymce.DOM.setHTML(tinymce.DOM.get(tinyMCE.activeEditor.id + '_path_row'), text);
        // Is there more Characters than we want
        if (strip.length > maxChars) 
        {
            // Show an alert (can comment out)
            alert("Sorry too many characters "  + strip);
            // Get all characters up to the limit
            cur = strip.substring(0,maxChars);
            // Replace content with the max amount
            tinyMCE.activeEditor.setContent(oldContent);
        }

        else
        {
            oldContent = content;

        }

            });

        }
});
</script>
于 2012-12-28T12:53:33.690 に答える