0

我有以下表格

<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设置为 value ""。我的 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 检查元素时它仍然显示value="")。

我需要在提交表单时获取更改的值。有什么建议吗?

4

1 回答 1

1

想出了一个解决办法。问题是由于禁用财产而引起的,即disabled="true"。虽然java脚本有访问权限并且可以修改value输入的属性,但是在提交spring表单时并没有体现出来。我一开始怀疑的模型属性绑定没有问题。在禁用属性关闭的情况下工作正常。

但是,如果您仍然想让输入字段不可编辑,则readonly可以将另一个属性设置为 true。使用 javascript 更改值,该值会反映在表单提交的模型属性中。

<form:input path="key" id="key" cssClass="text" maxlength="200" cssStyle="width:60%" readonly="true"/>
于 2014-07-14T19:13:09.463 回答