提问者:小点点

jquery each for form elements-如何在form中获得next、prev元素?


我有一个表单,其中每个输入元素都有一个带有文本的标签,一些标签有一个带有“required”类的span项,在标签和文本输入之间可能有一些更多的div。

<label for="diameter">D<span class="required">Required</span></label>
<div ...
    <input type="text" id="diameter" name="diameter" value="20" />

我需要通过所有的输入,有一个标签与所需的跨度。我可以旋转穿过所有的跨度

$('form .required').each(function(index, element) {
});

其中“元素”是跨度。但如何获取关联的输入?以下均不起作用:

element.next('input[type="text"]')
$(element).next('input[type="text"]')

共1个答案

匿名用户

从其for属性(可通过jQuery上的.attr或元素上的.htmlfor访问)中,您可以获得它指向的ID,并使用该ID,您可以选择所需的元素:

null

$('.required').each((_, span) => {
  const $input = $('#' + $(span).parent()[0].htmlFor);
  console.log($input.val());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="diameter">D<span class="required">Required</span></label>
<div>
  <input type="text" id="diameter" name="diameter" value="20">
</div>