问题
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?
回答1:
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