javascript更改隐藏值然后提交表单

时间:2012-07-03 17:29:50

标签: javascript html forms

(我搜索过类似的东西,但没有发现任何匹配和/或有效的东西)

我有一个进度审核表单,用户可以从之前的步骤中查看其设置。以下是我现在的表格:

<form id='reviewForm' name='reviewForm' action='?action=ae&view=makeWorkFlow' method='post'>
    <table width='100%'>
        <tr>
            <th width='150'>Workflow Name</th>
            <td>" . $workflowName . "</td>
        </tr>
        <tr>
        <th valign='top'>Tasks</th>
            <td>
                <table width='99%'>
                    <tr>
                        <td>
                            <select name='task_1'>
                                <option value='0'>Select a Task</option>
                                <ALL OTHER OPTIONS>
                            </select>
                        </td>
                        <td><input type='text' name='turnAround_1' value='#VALUE#' onkeyup="if (/[a-z\s,$]/ig.test(this.value)) this.value = this.value.replace(/[a-z\s,$]/ig,'')" placeholder='Turn Around Time (hours)' /> Hours</td>
                    </tr>
                </table>
            </td>
        </tr>
        <tr>
            <td colspan='2'>
                <input type='hidden' id='step' name='step' value='4' />
                <input type='submit' name='submit' value='Create Workflow' />&nbsp;&nbsp;
                <input type='button' value='Update Changes' onclick='setStep();' />&nbsp;&nbsp;
                <input type='button' value='Cancel' onclick='javascript:history.go(-3);' />
            </td>
        </tr>
    </table>
</form>

因此,基本上,用户已经从下拉列表中选择了项目。我需要向他们展示一个“评论”页面,他们可以选择更改他们的选择并点击“更新更改”按钮。单击该按钮时,“step”隐藏字段的值需要从4更改为3,然后通过“setStep”函数提交表单,如下所示:

<script language='JavaScript' type='text/javascript'>
    function setStep()
    {
        document.forms["reviewForm"].step.value = 3;
        var t = setTimeout("document.reviewForm.submit();", 0);
    }
</script>

我意识到setTimeout不是最好的方法,但它正是我现在想要解决的问题。我确定这是一些我想念的小东西可以解决这个问题,但是我已经在这一段时间内待了一个多小时而找不到它。

3 个答案:

答案 0 :(得分:6)

问题是提交按钮的名称是submit

因此在解析document.reviewForm.submit()

它不允许,因为submit()是javascript中的函数。在您的代码中,submit也是表单中元素(<input type='submit' name='submit' value='Create Workflow' />)的名称。

将按钮的名称更改为submit以外的任何内容(例如:submit1),它将成功运行

也不需要我们setTimeout只需使用以下代码

function setStep()
    {
        document.forms["reviewForm"].step.value = 3;
                document.reviewForm.submit();
    }

答案 1 :(得分:2)

document.getElementById('step').value='3';
document.getElementById('reviewForm').submit();

更新

答案 2 :(得分:1)

尝试document.getElementById('step').value = 3而不是 document.forms["reviewForm"].step.value = 3;