Hỏi về submit data từ ckeditor

Em có một đoạn demo nhỏ như sau : https://js.do/code/submitdatackeditor
validate hoạt động bình thường nhưng ở lần đầu ấn submit thì dù mình đã nhập dữ liệu vào nó vẫn hiện validate message lên. Bác nào có hướng giải quyết không ạ, em tìm trên stackoverflow xong thử đủ các kiểu vẫn bị lỗi này :frowning:

ngồi mò hoài mới chạy được.
code của bạn nên sửa lại.
Đoạn HTML


<form action="../../scripts/upload-job.php" method="post" name="myForm" id="myForm">
        <label>Description</label>
        <textarea name="editor1" id="editor1" class="required"></textarea>
        <script>
            CKEDITOR.replace( 'editor1' );
        </script>
        <br/>
                        <input name="submit" type="submit" value="Submit" id="job-submit"/>
</form>

chỗ này lưu ý <textarea name="editor1" id="editor1" class="required"></textarea>CKEDITOR.replace( 'editor1' );
– class css required dùng để đánh dấu input nào muốn validate.
– CKEDITOR.replace( ‘editor1’ ): replace textarea thành CKEDITOR.

code javascript:

$(document).ready(function(){
    $("#myForm").validate({
      ignore: [],
    rules: { cke_1_contents: { required: function() { CKEDITOR.instances.editor1.updateElement(); }}},
        messages: { editor1: "vui long nhap"},        
        errorPlacement: function(error, element) {
            if(element.attr("id")=="cke_editor1"){ error.insertBefore("cke_editor1");}
            else { error.insertAfter(element);}    
        }        
    });
});

– cke_1_contents: id của CKEditor tự động sinh ra. Tại sao dùng cái này vì đoạn code HTML trên textarea bị hidden nên không dùng được, cke_1_contents là nội dung của CKEditor. Theo suy nghĩ mình là mình lấy nội dung ở đây để kiểm tra.
– if(element.attr(“id”)==“cke_editor1”): do textarea bị ẩn đi nên chỗ này chọn id của CKEditor.

Giờ lại bị 1 vấn đề: khi không nhập thì validate ok. Xong rồi nhập giá trị vô thì nhấn 2 lần mới chuyển ra trang submit. Không biết vì sao.

Code demo
https://jsfiddle.net/masoivn/eb3qvuob/8/

1 Like

tks anh nhiều. tìm ra đc cách khác rồi nên quên béng topic này, giờ mới nhớ ra vào tham khảo :smiley:
cách e làm là để 1 sự onlick lúc submit, gọi function CKupdate()

function CKupdate(){
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
};

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?