6

enableTinyMCE(); という関数呼び出しを自分のページに配置したいと考えています。その関数で、ページにテキストエリアがあるかどうかを確認したいのですが、そうであれば tinyMCE.init() 関数を実行します。ページに textarea 要素があるかどうかを検出するにはどうすればよいですか?

4

7 に答える 7

8
if( $('textarea').length > 0 ) {
    ...
}
于 2009-06-04T13:29:09.823 に答える
7
if($('textarea').length > 0) {
    document.write('we have at least one textarea');
}

また

if($('textarea').length) {
    document.write('we have at least one textarea');
}

FAQからこれを読んでください:

http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_test_whether_an_element_exists.3F

于 2009-06-04T13:25:34.433 に答える
5

探している機能は TinyMCE 自体で処理できることに注意してください。

modetinyMCE.init() 呼び出しでパラメーターをに設定するtextareasと、見つかったテキストエリアがエディター インスタンスに自動的に変換されます。テキストエリアがなければ、静かに何もしません。

tinyMCE.init({
    ...
    mode : "textareas",
    ...
});

specific_textareas逆に、パラメーターの値を使用して、CSS クラス名に一致するテキストエリアのみを変換するように TinyMCE に指示することもできmodeます。

tinyMCE.init({
   ...
   mode : "specific_textareas",
   editor_selector : "mceEditor"
});

http://wiki.moxiecode.com/index.php/TinyMCE:構成/モード

于 2009-06-27T15:59:53.977 に答える
4

karim79の答えを拡張します。

jQueryドキュメントページから:注:要素が存在するかどうかをテストする必要は必ずしもありません。次のコードは、アイテムが存在する場合はそのアイテムを表示し、存在しない場合は何もしません(エラーなし)。

つまり、次のことができるということです。

$(function(){
    $("textarea").each(function(i){
        this.enableTinyMCE();
    })
})

編集:

実際には、この目的のために開発されているjQueryプラグインがあります。プラグインをダウンロードして試してみて、できればその開発に貢献します。

jq-tinyMCE

于 2009-06-04T14:00:00.543 に答える
2

一致する要素が見つからない場合でも、jQuery セレクターは常に配列を返します。これは、長さを確認する必要があることを意味します。代わりにこれを試してください。

if($('textarea').length > 0) {    
 document.write('we have at least one textarea');
}
于 2009-06-04T13:29:08.997 に答える
1

提案どおりに次のことを行いましたが、ページにテキスト領域がある場合にのみenableTinyMCEを呼び出したいと思います。document.readyでこの関数を呼び出すことができません。Googleを参照してください!何か案は?

$(function() {

     if ($('textarea').length > 0)
    {
       var data = $('textarea');
       $.each(data, function(i)
       {
         tinyMCE.execCommand('mceAddControl', false, data[i].id);
       }
       );
    }

});

function enableTinyMCE()
{
        tinyMCE.init({
            plugins: 'paste',
            theme_advanced_toolbar_location: 'top',
            theme_advanced_buttons1: 'pastetext,pasteword,copy,cut,separator,bold,italic,underline,separator,bullist,numlist,separator,undo,redo,separator,link,unlink,separator,charmap,separator,formatselect,separator,code',
            theme_advanced_buttons2: '',
            theme_advanced_buttons3: '',
            mode: 'textareas',
            theme: 'advanced',
            theme_advanced_blockformats: 'None=p,Heading 3=h3,Heading 2=h2'
        });
}

tinymce.initはdocumentreadyの外部で呼び出す必要がありますが、$('textarea')。lengthはdocumentreadyの外部では常にゼロです。ヘルプ!

于 2009-06-04T13:53:18.450 に答える
0

これが私の解決策です

if ($('textarea').length > 0)
    {
       var data = $('textarea');
       $.each(data, function(i)
       {
         tinyMCE.execCommand('mceAddControl', false, data[i].id);
       }
       );

       $('form').bind('form-pre-serialize', function(e) {
            tinyMCE.triggerSave(true,true);
        });
    }

そして、tinyMCEを有効にするためにこれを行いました

<% if (ViewData["TextAreaVisible"] != null && bool.Parse(ViewData["TextAreaVisible"].ToString()) == true)
   {%>
        <script type="text/javascript" src="../../Scripts/tinymce/tiny_mce.js"></script>
        <script type="text/javascript">
           enableTinyMCE();
        </script>
<%} %>

EnableTinyMCE はこれを行います

function enableTinyMCE() {

    tinyMCE.init({
        plugins: 'paste',
        theme_advanced_toolbar_location: 'top',
        theme_advanced_buttons1: 'pastetext,pasteword,copy,cut,separator,bold,italic,underline,separator,bullist,numlist,separator,undo,redo,separator,link,unlink,separator,charmap,separator,formatselect,separator,code',
        theme_advanced_buttons2: '',
        theme_advanced_buttons3: '',
        mode: 'none',
        theme: 'advanced',
        theme_advanced_blockformats: 'None=p,Heading 3=h3,Heading 2=h2'
    });

}

于 2009-06-05T14:00:50.473 に答える