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 dojoType="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," ");
return submittedEditorValue;
//dijit.byId("editor1").document.body.innerHTML = submittedEditorValue;
}
else{
return "";
}
}
})
</script>
</html>
来源:https://stackoverflow.com/questions/6073811/submitting-a-form-with-a-dojo-rich-text-editor