开发者

Submitting a form with a Dojo Rich Text Editor

Does anyone out there know how to submit a form that contains a Dojo Rich Text Editor?

I've tried adding the "name" attribute to my element that is decorated with dojoT开发者_开发问答ype="dijit.Editor", however, I don't see any of the HTML on my receiving process.

I've checked the documentation and I don't see any clear example (other than connecting the on submit event of the form in question with another function that sets the data of a hidden input with the "value" of the Rich Text Editor").

I would assume there has to be some "easier" way to do this?


Here im able to send the value to the server, and able to redisplay in the submitted value as intial display value for the Editor.

<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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜