javascript - SubmitForm 奇怪的行为

标签 javascript jquery

我在个人资料页面中实现了预览按钮和保存按钮,将表单提交到两个不同的页面。一个带有保存数据的代码,另一个是假页面,显示的信息与原始页面将显示的信息相同。 这是代码

<form id="personal-information-form" method="post"  enctype="multipart/form-data">
<!--Some code to recollect info -->
<script type="text/javascript">
function submitForm(action)
{
    document.getElementById('personal-information-form').action = action;
document.getElementById('personal-information-form').setAttribute("target", "_blank");
    document.getElementById('personal-information-form').submit();
}
</script>       
  <p><input type="submit" name="preview-info" class="my-buttons"  onclick="submitForm('url_to_preview')" value="Preview" >&nbsp;
    <span><input type="submit" name="save-info" class="my-buttons" value="Save"></span></p>
     </form>

如果我单击两个按钮之一,一切正常。 如果我先单击预览,然后单击保存按钮,则保存按钮不会保存信息,而是显示预览页面。为什么?怎么解决呢?

最佳答案

当您单击“预览”按钮时,您将把 formaction 属性永久设置为预览 URL。

一般来说,我更愿意使用 AJAX 而不是使用表单 hackery 来做这样的事情,但是您可以像这样修改当前的解决方案:

function submitForm(action, target) {
    var form = document.getElementById('personal-information-form');    
    var originalTarget = form.target;
    var originalAction = form.action;
    form.setAttribute("target", target || "_self");
    form.action = action;
    form.submit();
    form.target = originalTarget;
    form.action = originalAction;
    return false;
}

这将在提交后恢复当前操作和目标。 (尚未测试;让我知道情况如何)。

然后,预览按钮的 onclick 应该为 submitForm('url_to_preview', '_blank')

关于javascript - SubmitForm 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973773/

相关文章:

javascript - 在 Angular js 中优化文本搜索

jquery - 使用 jQuery/JavaScript 在 href 之后滚动到

javascript - 如何将选择元素的值和文本移动到另一个选择元素

jquery - 验证输入值是否为 1,000,000.00 或更大

javascript - Chrome 应用程序如何自行重新加载? (不允许 document.location.reload)

javascript - Vue 在每个选择框选择时调用 axios

javascript - 我的Bootstrap轮播不显示并显示一些JS错误

javascript - 根据数据列表选项链接到其他页面

javascript - 正确插入表名

javascript - ionic 框架 : Parse xml from responseText