enableTinyMCE(); という関数呼び出しを自分のページに配置したいと考えています。その関数で、ページにテキストエリアがあるかどうかを確認したいのですが、そうであれば tinyMCE.init() 関数を実行します。ページに textarea 要素があるかどうかを検出するにはどうすればよいですか?
7 に答える
if( $('textarea').length > 0 ) {
...
}
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
探している機能は TinyMCE 自体で処理できることに注意してください。
modetinyMCE.init() 呼び出しでパラメーターをに設定するtextareasと、見つかったテキストエリアがエディター インスタンスに自動的に変換されます。テキストエリアがなければ、静かに何もしません。
tinyMCE.init({
...
mode : "textareas",
...
});
specific_textareas逆に、パラメーターの値を使用して、CSS クラス名に一致するテキストエリアのみを変換するように TinyMCE に指示することもできmodeます。
tinyMCE.init({
...
mode : "specific_textareas",
editor_selector : "mceEditor"
});
karim79の答えを拡張します。
jQueryドキュメントページから:注:要素が存在するかどうかをテストする必要は必ずしもありません。次のコードは、アイテムが存在する場合はそのアイテムを表示し、存在しない場合は何もしません(エラーなし)。
つまり、次のことができるということです。
$(function(){
$("textarea").each(function(i){
this.enableTinyMCE();
})
})
編集:
実際には、この目的のために開発されているjQueryプラグインがあります。プラグインをダウンロードして試してみて、できればその開発に貢献します。
一致する要素が見つからない場合でも、jQuery セレクターは常に配列を返します。これは、長さを確認する必要があることを意味します。代わりにこれを試してください。
if($('textarea').length > 0) {
document.write('we have at least one textarea');
}
提案どおりに次のことを行いましたが、ページにテキスト領域がある場合にのみ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の外部では常にゼロです。ヘルプ!
これが私の解決策です
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'
});
}