使用Dojo富文本编辑器提交表单

时间:2011-05-20 15:01:22

标签: forms richtextbox dojo rich-text-editor

有没有人知道如何提交包含Dojo富文本编辑器的表单?

我尝试将“name”属性添加到用dojoType =“dijit.Editor”修饰的元素中,但是,我在接收过程中没有看到任何HTML。

我已经查看了文档,但是我没有看到任何明确的示例(除了将相关表单的on submit事件与另一个函数连接起来,该函数使用Rich的“value”设置隐藏输入的数据文字编辑器“)。

我认为必须有一些“更容易”的方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

此处我可以将值发送到服务器,并且能够将提交的值重新显示为编辑器的初始显示值。

<html>
<head>
<style type="text/css">
    @import "http://ajax.googleapis.com/ajax/libs/dojo/1.5/dijit/themes/claro/claro.css";   
</style>        
<script src="djlib/dojo/dojo.js" type="text/javascript" djConfig="parseOnLoad:true"></script>   
 <link rel="stylesheet" href="djlib/dojox/grid/resources/Grid.css" type="text/css" />
<body class="claro">
    <?php if(count($_POST) > 0) {
            echo '<script>function dumpSubmittedEditorValue(){}</script>';
            echo "<script>var submittedEditorValue = '$_POST[ed1]'</script> ";
        } 
    ?>
    <form jsId="frm1" dojoType="dijit.form.Form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <input type="hidden" name="ed1" />
        <span dojoType="dijit.form.Button">
            Submit
            <script type="dojo/method" event="onClick">
                frm1.submit();
            </script>
        </span>
    </form>
    <div  dojoType="dijit.Editor" id="editor1">         
        <script type="dojo/method">
            this.hiddenField = dojo.query("[name=ed1]")[0];
            //console.log(this.hiddenField);
            /*dojo.connect(this.document.body,'onload',function(){                  
                console.log("A");
                console.log(this.document.body);
            })*/
        </script>
        <script type="dojo/method" event="onChange" args="val">
            //1st format. <p>     hi - should be - <p>HI
            var str = dojo.string.trim(val);

            var tagsEncoded = dojox.html.entities.encode(str, encodecustomMap);
            var whiteSpaceEncoded= tagsEncoded.replace(/\s/ig,"%20");
            this.hiddenField.value = whiteSpaceEncoded;
            console.log(this.hiddenField.value)
            //console.log(dojox.html.entities.decode(whiteSpaceEncoded.replace(/%20/ig," "), decodecustomMap))


        </script>


    </div>
    <script>
        var decodecustomMap = [                 
                ["\u003C", "lt"],
                ["\u003E", "gt"],
                ["\u0026", "amp"]
            ];
            var encodecustomMap =  [
                ["\u003C", "lt"],
                ["\u003E", "gt"]
            ];
    </script>
</body>

<script>      
    dojo.require("dijit.Editor");
    dojo.require("dojox.html.entities");
    dojo.require("dijit.form.Form");

    dojo.addOnLoad(function(){
        console.log(dojo.query("iframe", dijit.byId("editor1").domNode))
        dojo.connect(dojo.query("iframe", dijit.byId("editor1").domNode)[0],'onload',function(){
            console.log(this.contentDocument.body)
            this.contentDocument.body.innerHTML = getEditorIntialValue();
        })
        function getEditorIntialValue(){
            if(typeof submittedEditorValue != "undefined"){
                submittedEditorValue = dojox.html.entities.decode(submittedEditorValue,decodecustomMap);
                submittedEditorValue  = submittedEditorValue.replace(/%20/ig,"&nbsp;");
                return submittedEditorValue;
                //dijit.byId("editor1").document.body.innerHTML = submittedEditorValue;
            }
            else{
                return "";
            }
        }

    })
</script>
</html>