我正在尝试在 multipart/form-data 表单中使用 HTMLEditor:
<script>
function doSubmit() {
var editor = myEditor.down('#displayName');
var sName = editor.getValue();
var myForm = document.getElementById('myform');
myForm.sDisplayName.value = sName;
myForm.submit();
}
var myEditor;
Ext.onReady(function() {
myEditor = Ext.create("Ext.panel.Panel", {
height: 100,
width: 552,
renderTo: 'richtext',
items:[{
xtype: 'htmleditor',
itemId: 'displayName',
name: 'displayName',
fontFamilies: [...],
height: 100,
width: 550,
border: 0,
value: ...,
}]
});
myEditor.down('#displayName').focus();
myEditor.show();
});
</script>
<form name="myform" id="myform" action="..." .method="post" enctype="multipart/form-data">
...
...
<div id="richtext"></div>
</form>
该表单还包含单击时调用 doSubmit() 的“确定”按钮,以及隐藏的输入参数 sDisplayName 以及其他几个输入字段和文件输入。
这是问题所在:
生成的 textarea 元素的名称属性为空。Chrome 和 Firefox 只是在生成 POST 请求时忽略它,我对此很好,但 IE 在请求中包含生成的 textarea 元素的值。由于textarea输入名称为空,所以param名称也为空,这样在请求被另一个JSP处理的时候就麻烦了。这是它在 IE 网络嗅探器中的外观:
Content-Disposition: form-data; name=""
<FONT style="FONT-FAMILY: Arial; FONT-SIZE: 36px">My Text</FONT>
这被视为无效请求,请求处理失败(应该如此)
为什么生成 textarea 元素的名称为空白?我希望名称配置用作 HTML 名称属性。有谁知道解决方法,比如阻止 IE 提交 textarea 输入?我尝试将 submitValue 配置设置为 false,还尝试在提交之前将禁用的配置设置为 true - 没有成功。