javascript - 对同一页面上的多个 html 表单重用 JavaScript 脚本

标签 javascript jquery html forms reusability

我的页面有多个表单,我需要在其上使用相同的 JavaScript 代码。 JavaScript 代码向表单添加更多输入字段。该脚本工作正常,但向所有表单添加了输入字段。我需要它仅将字段添加到当前填写的表单中。到目前为止我还没有运气。

以下是其中一种表单的样子:

<form>
<div class="price-group">
  <div class="price-fields">
  <label>Multiple <a class="add-field" href="#"> Add Field</a></label>
    <br><input  maxlength="7" type="text" name="prices[]" />
  </div><!--end form-group price-fields-->
</div><!--end price-group-->
</form>

这是我的 JavaScript:

$(document).ready(function($){
     $('.price-group .add-field').click(function(e){
          e.preventDefault();
          var n = $('.price-fields').length;
          $('.price-group').append('<div class=" price-fields"><input  maxlength="7" type="text" name="prices[]"  /><a class="remove-field pull-right" href="#">Remove</a></div><!--end form-group-->');
     });
     $('.price-group').on('click', '.remove-field', function(){
          $(this).parent().fadeOut("slow", function() {
              $(this).remove();
          });
          return false;
     });
});

我设置了jsfiddle: JsFiddle Link

最佳答案

您可以使用jQuery closest找到最近的.price-fields到点击的<a>标签:

$(document).ready(function($){
     $('.price-group .add-field').click(function(e){
          e.preventDefault();
          var n = $('.price-fields').length;
          $(this).closest('.price-group').append('<div class=" price-fields"><input  maxlength="7" type="text" name="prices[]"  /><a class="remove-field pull-right" href="#">Remove</a></div><!--end form-group-->');
     });
     $('.price-group').on('click', '.remove-field', function(){
          $(this).parent().fadeOut("slow", function() {
              $(this).remove();
          });
          return false;
     });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<div class="price-group">
  <div class="price-fields">
  <label>Multiple <a class="add-field" href="#"> Add Field</a></label>
    <br><input  maxlength="7" type="text" name="prices[]" />
  </div><!--end form-group price-fields-->
</div><!--end price-group-->
</form>

<form>
<div class="price-group">
  <div class="price-fields">
  <label>Multiple <a class="add-field" href="#"> Add Field</a></label>
    <br><input  maxlength="7" type="text" name="prices[]" />
  </div><!--end form-group price-fields-->
</div><!--end price-group-->
</form>

<form>
<div class="price-group">
  <div class="price-fields">
  <label>Multiple <a class="add-field" href="#"> Add Field</a></label>
    <br><input  maxlength="7" type="text" name="prices[]" />
  </div><!--end form-group price-fields-->
</div><!--end price-group-->
</form>

Working fiddle

关于javascript - 对同一页面上的多个 html 表单重用 JavaScript 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085911/

相关文章:

javascript - JQuery:在追加时得到一个 child

jquery - 带或不带缩略图的 css 和 html 列表或 div 位置

html - 这个 pics-label 标签是做什么的?

html - 在复选框和单选按钮图像周围显示 1 px 边框

javascript - 获取 map 区域的位置(html)?

javascript - 即使工具箱打开,Firefox 和 RequireJS 仍然从缓存中提取

javascript - 在 JavaScript 中使用父/子列表从平面列表生成嵌套列表

javascript - 查找最多两位小数的数字的 REGEXP

php - 如何使用jquery ajax错误参数

jQuery UI 对话框在 IE9 中不起作用