A-AA+then

CKEditor ขอความช่วยเหลือหน่อยครับ

1,650
พอดีจะทำ blockquote ซึ่งต้องใช้งานร่วมกับ CKEditor API ติดอยู่ปัญหาที่ คลิ๊กเลือก blockquote ของ Comment มันกลับเอาแต่ Comment ที่ 1 มาตลอด ช่วยแก้ปัญหาหน่อยคราฟ 

ตัวอย่างโค๊ด ...

<script type="text/javascript">

function InsertHTML()
{
// Get the editor instance that we want to interact with.
var oEditor = CKEDITOR.instances.editor1;
var value = document.getElementById( 'htmlArea' ).value;

// Check the active editing mode.
if ( oEditor.mode == 'wysiwyg' )
{
// Insert HTML code.
// http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#insertHtml
oEditor.insertHtml( value );
}
else
alert( 'You must be in WYSIWYG mode!' );
}

</script>


</head>
<body>
<form action="sample_posteddata.php" method="post">
<textarea cols="100" id="editor1" name="editor1" rows="10"></textarea>

<script type="text/javascript">
//<![CDATA[
// Replace the <textarea id="editor1"> with an CKEditor instance.
var editor = CKEDITOR.replace( 'editor1' );
//]]>
</script>


<input onclick="InsertHTML();" type="button" value="Insert HTML" />
<br />
<textarea cols="100" id="htmlArea" rows="3">
            <blockquote>
Comment1

</blockquote> </textarea>

<br /><input onclick="InsertHTML();" type="button" value="Insert HTML" />
<br />
<textarea cols="100" id="htmlArea" rows="3" >
            <blockquote>
Comment2

</blockquote> </textarea>

</form>

7 ความคิดเห็น

จริงๆมันก็มีหลายวิธีนะครับ แต่หลักๆ ก็คือ การจะ quote ให้ถูกต้องได้ ก็ต้องอ้างถึงสิ่งที่จะ quote ให้ได้ก่อน ซึ่งจะทำอย่างไรก็ขึ้นอยู่กับสิ่งที่ทำไว้แล้ว ยกตัวอย่าง

1. เรียกข้อความที่จะ quote ด้วย Ajax โดยการเก็บ id ของสิ่งที่ต้องการโค้ดไว้ที่ปุ่ม quote และเมื่อต้องการจะ quote ก็กดปุ่มนี้ และจะส่งไปอ่านข้อความมาด้วย Ajax และเอาข้อคามที่ได้ใส่ไปยัง editor เช่น

<img src=quote.png alt=quote onclick="doQuote(1)">

1 หมายถึง id ของกระทู้ที่ต้องการ quote หรือ

2. เก็บข้อความที่ต้องการ quote ไว้ที่ฟัวก์ชั่นเลย วิธีนี้ การ quote จะไม่ต้องเรียกไปยัง Ajax วึ่งจะเร็วกว่า แต่ข้อเสียก็คือ ถ้าข้อความยาวๆ อาจทำให้เพจโหลดช้าลง

<img src=quote.png alt=quote onclick="doQuote('[ quote r=1 ]อ้างอิงคำถามจากคำตอบที่ 1[ /quote ]')">
1

ปัญหาผมตอนนี้ที่เป็นอยู่คือการเก็บค่า ID ใว้ใน Quote นี้แระครับ คือ ค่า Onclick ผมมันต้องใช้ onclick="InsertHTML();"  ไม่รู้วิธีใส่ค่า ID แล้วให้มันเรียกมาใช้งาน CKEditor ครับ
2

555+++
ใส่ id ลงไปที่ onclick เลยครับ

<img src=quote.png onclick="doQuote(<?php $item['id']?>)">

ปัญหาจะอยู่ที่ doQuote ครับ ซึ่งที่ doQuote จะต้องไปอ่นข้อความจริงๆออกมาก่อน แล้วจึงจะนำข้อความที่ได้ไปใส่ลงใน editor

function doQuote(id){
 // ส่ง ajax ไปอ่านข้อมูลจาก id ที่ getquote.php
  send('getquote.php', 'id=' + id, function(xhr){
    // ค่าตอบกลับจาก Ajax นำไปใส่ลง editor
    var oEditor = CKEDITOR.instances.editor1;
    oEditor.insertHtml(xhr.responseText);
  });
}

เขียนคร่าวๆให้ดูนะครับ ไปปรับให้ใช้งานจริงได้เองละกัน

ปล. ฟังก์ชั่น send เป็นฟังก์ชั่น Ajax ของ GCMS นะครับ
3

ถ้าไม่เป็นการรบกวนท่านอาจารย์ขอตัวอย่างการเรียกใช้งาน ขอเอาแบบที่ 2 นะครับ
4

อ้างจากคำตอบที่ #4ถ้าไม่เป็นการรบกวนท่านอาจารย์ขอตัวอย่างการเรียกใช้งาน ขอเอาแบบที่ 2 นะครับ

555+++

function doQuote(value){
    // value ส่งมาจากการคลิกไอคอน เอามาใส่ ลงใน editor ได้ตรงๆ
    var oEditor = CKEDITOR.instances.editor1;
    oEditor.insertHtml(value);
}
5

เดี๋ยวก็คงจะใช้ไม่ได้อีก
<?php
// เข้ารหัสข้อความก่อนส่งเข้าใส่ฟังก์ชั่น doQuote ป้องกันตัวอักษรไม่พึงประสงค์
echo '<img src=quote.png alt=quote onclick="doQuote('.rawurlencode($item['detail']).')">';
?>

<script>
function doQuote(value){
     // value ส่งมาจากการคลิกไอคอน เอามาใส่ ลงใน editor ได้ตรงๆ
    var oEditor = CKEDITOR.instances.editor1;
    oEditor.insertHtml(decodeURIComponent(value));
}
</script>
6

นี้แระที่ต้องการ ขอบคุณคราฟ คิๆๆๆ พวก Java เนี้ยไม่ถนัดเลย
7
^