具有相同名称的多个输入字段的 Jquery 选择器

间谍

我有一个表格,可以上传三个不同的文件。此外,我有两个用于所有文件上传的输入字段,用于存储有关文件上传的一些信息。

<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> .
</script>

<div>
  <input type="file"  class="file_name" name="file_name[]"onchange="getFileData(this);" />
  <input type="text" class="file_name_helper" name="file_name_helper[]"/>
  <input type="text" class="duration" name="duration[]"/>
</div>

<div>
  <input type="file" class="file_name" name="file_name[]" onchange="getFileData(this);" />
  <input type="text" class="file_name_helper" name="file_name_helper[]" />
  <input type="text" class="duration" name="duration[]"/>
</div>

<div>
  <input type="file" class="file_name" name="file_name[]" onchange="getFileData(this);"/>
  <input type="text" class="file_name_helper" name="file_name_helper" />
  <input type="text" class="duration" name="duration[]"/>
</div>

<script type="text/javascript">
function getFileData(myFile){
  var file = myFile.files[0];
  var filename = [file.name];
  $(myFile).next("input[name='file_name_helper[]']").val(filename);
  $("input[name='duration[]']").val("duration");
}
</script>

问题是,当我上传表单时,第一个字段“file_name_helper”被我拥有的选择器正确填充,但是当我对“duration”字段执行相同操作时,它不起作用。如何选择特定的持续时间字段?任何帮助,将不胜感激

某些表演

从您的 中onchange="getFileData(this);",您将 div 中的第一个输入作为myFile参数的引用,并且您想要选择与选择器匹配的同级,因此您可以使用.siblings调用方法 on $(myFile)

function getFileData(myFile){
  var file = myFile.files[0];
  var filename = [file.name];
  $(myFile).next("input[name='file_name_helper[]']").val(filename);
  $(myFile).siblings("input[name='duration[]']").val("duration");
}

请注意,如果您的 HTML 如上所述,则不需要将选择器传递给.next,因为.next默认情况下将选择紧邻的下一个元素:

$(myFile).next().val(filename);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章