【问题标题】:How to modify a link's href so it submits form如何修改链接的href以提交表单
【发布时间】:2017-05-31 09:56:03
【问题描述】:

我正在处理一个使用 EJS 模板化的网页。每行都有自己的表单和一些表单元素(全部禁用);以图标结尾的行用作链接。

我想要做的是,当单击该图标时,该图标将变为“勾号”图标,并启用该行上的所有表单元素。到目前为止一切顺利...

但是,在此转换之后,我希望链接(现在带有“勾号”图标)能够在单击时提交表单。我没有这样做。

我在 EJS 模板中有图标的地方:

<a href="#" onclick="adjustActionIcons('<%=i%>')" id="link<%=i%>"><span class="glyphicon glyphicon-pencil" id="editIcon<%=i%>"></span></a>

点击后调用的函数:

function adjustActionIcons(id) {
document.getElementById("dropDown" + id).removeAttribute("disabled");
document.getElementById("Text" + id).removeAttribute("disabled");
document.getElementById("editIcon" + id).className = "glyphicon glyphicon-ok";
// ?????
}

如何更改由表单提交函数/触发器替换的 href 属性?或者任何其他方法来实现相同的目标?

【问题讨论】:

  • 在您的点击处理程序中调用表单提交方法...?
  • 添加setTimeout函数提交表单(例如表单的id为id_frm,则为document.getElementById('id_frm').submit())。这样过渡和提交函数可以异步工作。

标签: javascript jquery html node.js forms


【解决方案1】:

据我所知,您可以在元素上扩展 onclick 函数 - 并在其旁边放置一个隐藏的提交按钮,然后像这样修改代码:

<a href="#" onclick="adjustActionIcons('<%=i%>');$(this).next().trigger('click');" id="link<%=i%>"><span class="glyphicon glyphicon-pencil" id="editIcon<%=i%>"></span></a>
<button type="submit" style="display:none"></button>

这将分别提交锚标签所在的表单。

PS:作为替代方案,您也可以只找到最近的表单元素并在其上调用提交触发器。如果您需要这些信息,请告诉我。

编辑: 将这一行替换为

$(this).closest('form').submit();

如果您仍在苦苦挣扎,也许可以将标记显示到实际表单。

【讨论】:

  • 谢谢,我粘贴了代码,但是编辑器在 'function' 之后显示了 'identifier expected' - 将其用作 'function test()' 也做了一些更改。根本不调用“adjustActionIcons”函数。 (使用原版以及我的一些变体)请问我错过了什么?
  • 我编辑了答案,function () {} 调用完全错误。我的错。其余的应该可以工作。随时通知我
  • 不幸的是,它不能按原样工作:第一次单击图像更改并启用元素后,但紧接着,一切都会重置。我添加了“return false;”在似乎停止立即更改的函数调用之后。但是,新链接仍然没有提交表单。我会继续努力,希望能有结果......
  • 最新版本也没有用。我意识到在一个页面上做所有事情对我来说太复杂了,尤其是这些模拟提交。我已将视图和编辑移动到单独的页面,我实现了我的目标。但是,我相信我最初想做的是在专业网站上正在做的事情,对吗?感谢您的指导
猜你喜欢
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2015-12-19
  • 2017-12-20
相关资源
最近更新 更多