当另一个窗体有焦点时,禁用其中一个窗体

Disable one on page form when the other form has focus

本文关键字:窗体 一个 另一个 焦点      更新时间:2023-09-26

所以我有一个问题,我有两个表单在同一网页上具有相同的ID(假设我不能很容易地改变任何形式的ID和两个形式都需要在页面上)。

当我提交其中一个表单时,它也在提交另一个表单,空白,创建两个提交。

我想禁用具有当前焦点的窗体的相反形式。例如,如果页面底部表单的提交按钮正在提交,那么理想情况下,顶部表单应该已经被javascript禁用,从而消除第二次提交。

下面是顶部表单的代码-

<div id="gf_top">
<form method="post" enctype="multipart/form-data" id="gform_1" action="/">

和底部的表单-

<div id="gf_bottom">
<form method="post" enctype="multipart/form-data" id="gform_1" action="/">

我不知道javascript/JQuery。

我怀疑我需要使用类似的东西(基于一些谷歌搜索)

$("#gf_top #gform1 :input").attr('disabled', true);

但是我真的不知道为一个的焦点添加的代码禁用另一个。我猜也需要有代码来删除禁用属性时/如果禁用表单接收焦点,然后禁用其他…Sheesh,任何帮助非常感激!

不能(不应该)有两个具有相同id的元素。修改id

要获得没有id的表单,您可以使用它的标签名称:

// All inputs of gf_top form are disabled
$("#gf_top form input").attr('disabled', true);

W3说关于id属性:

该属性为元素指定一个名称。此名称在文档中必须唯一。

如果你不能给你的表单一个自己的id,你至少会尝试摆脱这些id。您必须在呈现html(服务器端)之前完成此操作。

一旦你到达那里,你不必担心禁用任何东西。只有按下提交按钮的表单才会被发送。