Javascript 表单元素 id parentNode 如果不是直接字段

标签 javascript jquery html forms dom

当我点击网页中的表单字段(例如文本输入)时,我需要知道父表单的 ID。 只要项目直接在表单标签内,我就使用

elements [x] .parentNode.id;

但是当表单元素被包含时,问题就出现了,例如,表单中的一个 div 元素。在这种情况下,该函数返回父 div 的 id 而不是表单。 如果所讨论的 INPUT 元素是表单的直接子元素或 div 中的内容或表单标记中的其他对象,我需要一个函数来始终告诉我哪个是父表单的 ID。

在我的例子中,问题更加复杂,因为在同一个网页中有两个具有不同 ID 的表单,其中包含两个具有相同属性的输入:

第一种形式

<form action="seminario.php" method="post" accept-charset="utf-8" id="formContatti-footer" novalidate="novalidate">
   <div class="form-footer-left">
   <input type="text" name="azienda" value="" id="azienda" class="inputText3" required="required"><br>
   </div>  
   <input type="image" src="images/btn-iscriviti.png" name="invia" class="invia-footer"><br><br>
</form>

第二个进入同一页面:

<form action="seminario.php" method="post" accept-charset="utf-8" id="formContatti-2" novalidate="novalidate">
   <div class="form-footer-left">
   <input type="text" name="azienda" value="Your email here" id="azienda" class="inputText3" required="required"><br>
   </div>  
   <input type="image" src="images/btn-iscriviti.png" name="invia" class="invia-footer"><br><br>
</form>

在这种情况下,我需要区分 ID 为“azienda”的字段是在第一个表单上还是在第二个表单上被单击,然后 $(elements[x]).parents('form').attr('id') 返回在网页代码中读取的第一个表单元素的 id。

谢谢

最佳答案

好吧,尽管我对在这里使用 jQuery 感到很不爽,但它 被标记了并且用它更简单 - 所以:

$(elements[x]).closest("form").attr("id")

应该做到这一点,closest 在树中找到与给定选择器匹配的最近元素,因此我们找到最接近的形式并匹配它。

在原生 JavaScript 中,您可以执行如下操作:

 var el = elements[x];
 while(el.parentNode.tagName !== "FORM") el = el.parentNode
 el.parentNode.id; // will find the form's id

关于Javascript 表单元素 id parentNode 如果不是直接字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764221/

相关文章:

javascript - 是否可以使用javascript从浏览器中的sd卡读取文件系统

javascript - 在 typescript Angular 2中创建对象实例

javascript - 在 jquery 中制作表格行而不是表格标题可点击

javascript - getElementsByName 返回未定义

javascript - 文件的查询字符串是什么?

JavaScript 文件默认模板在 Java EE Eclipse 中不起作用

javascript - 带有左右箭头的文本框-Ionic4

javascript - HTMl5 tel 和 sms 是否返回任何值?

javascript - 如何在 ChartJS 中的 Y 轴值末尾添加单位?

jQuery fullcalendar - 如何减小日历的大小