我有以下表格
<form:form id="form" name="form" target="dummyHiddenForm" method="post" commandName="myForm" >
<span class="container">
<label>TestKey</label>
<span class="container-right">
<form:input path="key" id="key" cssClass="text" maxlength="200" cssStyle="width:60%" disabled="true"/>
<input type="button" class="refreshIcon" style="width:auto;" onclick="javascript:refreshKey()" />
</span>
</span>
<span style="width:auto; padding-left: 30%; padding-bottom: 4%; text-align:center; float:right; clear:both;">
<input type="button" class="button" style="width:auto;" value="Submit" onclick="javascript:submitForm()"/>
</span>
</form:form>
<iframe id="dummyHiddenForm" name="dummyHiddenForm" style="display:none;" ></iframe>
在包含表单的上页的GET请求中,我为对象myForm的每个变量设置了一些默认值,key
设置为值""
。
我的refreshKey()的java脚本函数是
function refreshKey(){
document.getElementById('key').value = generateKey() ;
}
此方法正常工作,onclick在输入文本字段中设置新键。
点击提交按钮我使用java脚本提交表单
function submitForm(){
var formVar = document.forms["form"];
formVar.action = "/test.htm";
formVar.submit();
}
但是在我的控制器中,无论输入字段的实际值如何,我都会获得相同的默认值""
。
我尝试使用javascript alert
和.value
我可以看到更改后的值,但实际DOM中的值没有变化(至少当我从firefox检查元素时它仍显示{{1} })。
我需要在提交表单时获取更改的值。有什么建议会出错?
答案 0 :(得分:0)
找出解决方法。该问题是由于残疾财产引起的,即disabled="true"
。虽然java脚本具有访问权限并且可以修改输入的value
属性,但在提交spring表单时不会反映该属性。我怀疑在开始时模型属性绑定没有问题。关闭已禁用的attribue可以正常工作。
但是,如果您仍想使输入字段不可编辑,则可以设置另一个属性readonly
,您可以将其设置为true。使用javascript更改值,该值将反映在表单提交的模型属性中。
<form:input path="key" id="key" cssClass="text" maxlength="200" cssStyle="width:60%" readonly="true"/>