0

这似乎应该如此简单,但它不起作用。我正在做的是获取旧操作,在末尾添加一个 ID,并将表单操作设置为该操作。这是代码:

var action = $('#update-schedule-form').attr('action');
$('#update-schedule-form').attr('action', action + '/1');

我可以看到表单的操作在 FireBug 和 Chrome 的检查器中发生了变化。但是,当我单击提交按钮时,它仍然会将其发送到原始操作。例如,它在代码中显示“/controller/action/1”,但提交到“/controller/action”。有什么想法吗?

更新

事实证明,我使用的框架 Yii 存储了它的 ajax 验证例程的原始表单操作地址。我没有在 Firebug 中看到表单提交,我看到验证试图在提交之前验证表单。我不知道 Yii 将它使用的 URL 存储在哪里或如何更改它(应该使用表单操作,但显然不是),所以我只是修改了我的控制器并将 ID 参数设为可选。现在验证运行愉快并且表单正确提交。

4

2 回答 2

2

也许你应该尝试使用prop而不是attr.

var action = $('#update-schedule-form').prop('action');
$('#update-schedule-form').prop('action', action + '/1');

检查.prop() 与 .attr()的答案

于 2013-09-10T03:41:24.717 回答
1

您是通过 jQuery 提交表单还是使用提交 html 按钮?尝试不同的提交方式。

另外,尝试以这种方式更新操作。

var action = jQuery('#update-schedule-form').get(0).getAttribute("action");
jQuery('#update-schedule-form').get(0).setAttribute('action', action + '/1');  

编辑:它可能是您的代码所在的位置,但如果没有错误,很难说,这可能不是问题。

于 2013-09-10T04:13:12.017 回答