从唯一的连接变量中减去1

时间:2015-09-30 00:56:16

标签: javascript jquery html

所以我写了一个脚本,让用户可以选择向表单添加多个图像。如果用户选择添加多个图片,则会点击“添加其他图片”#39;按钮,并添加另一个文件字段。

添加新文件字段时,该字段的ID是唯一的。第一个字段静态设置为" 1"。如果用户点击“添加其他图片”,则第二个字段的ID为" 2",则另一个字段为" 3"等等。这已经成功。

注意:

我根本没有给他们删除第一个文件字段的选项。

问题:

由于我想检查每个文件字段是否确实准备好上传文件,我已经决定添加一个'删除此图片'当'添加另一个图像时,每个字段旁边都有'按钮被选中。

理想情况下,当用户点击“删除此图片”时,按钮,该字段后面的字段的ID都被-1更改。

EG:用户已使用'添加其他图片'添加了另外五个文件字段。按钮,他们点击了删除此图片' ID为' 3'的文件字段旁边的按钮,表示' 4',' 5'和' 6'应该成为' 3',' 4'和' 5'。

修改
当前功能:

相应地减去了id,但是当添加新字段时,它将从之前的计数继续。 EG:如果是文件字段' 5'和' 6'删除,然后添加另一个,它被赋予' 7'。

如果你们中的任何一个人能够帮助我解决这个难题,我们将不胜感激。它有点油炸我的脑袋。

提前致谢,Rich

目前为止我的努力是:

$(document).ready(function() {

var count = 2;
$('#addImage').click(function(){
var countNew = count++;
$('#newsFormContainer #addImage').before( $('<div id="added"><br /><label for="' + countNew + '">Image ' + countNew + '</label class="strong" ><br /><input type="file" class="file" name="' + countNew + '" id="' + countNew + '" accept=".png"></div>'));
$('#newsFormContainer #addImage').before( $('<button id="' +  countNew + '" class="file" onclick="return false;">Remove this image</button>'));


$('button.file').click(function(){
var grabClass = document.querySelectorAll('[class^=file]');

console.log(grabClass)

$(grabClass).attr('id', function(index){
     return index + 1;
});
$(this).prev('#added').remove();
$(this).remove();
});

var inputs = document.querySelectorAll('[file^=file]').length;
document.getElementById('cnt').value = inputs;

});
});

2 个答案:

答案 0 :(得分:2)

尝试运行此代码;可能这解决了你的问题

&#13;
&#13;
$('#add-item').on('click', function() {
  var indexOfLastItem = parseInt($('ul>li:last').attr('data-index'));
  if(!indexOfLastItem){
    indexOfLastItem = 0;
    }
  indexOfLastItem += 1;
  $('ul').append('<li data-index="' + indexOfLastItem + '">Item ' + indexOfLastItem + '<button>Remove Image</button></li>')
});


/**
 * Dynamically assigning event handler
 *  Other wise it will not work for 'Remove' buttons added in runtime
 *
 */
$(document).on('click', 'li> button', function() {
  var indexOfLi = $(this).parent().attr('data-index');
  var $currentLi = $(this).parents('li');
  var $itemsAfterCurrent = $currentLi.nextAll();
  console.log($itemsAfterCurrent);

  rearrangeItems($itemsAfterCurrent);

  $currentLi.hide('slow', function() {
    $(this).remove();
  })

})

function rearrangeItems($itemsAfterCurrent) {
  $itemsAfterCurrent.each(function() {
    var index = $(this).attr('data-index');
    index = parseInt(index) - 1;
    console.log(index);
    $(this).attr('data-index', index);
    $(this).html('Item ' + index + '<button>Remove Image</button>');
  });
}
&#13;
li{
  margin: 5px;
  }
li>button{
  margin: 0 3px;
  cursor: pointer;
  }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li data-index="1">Item 1 <button>Remove Image</button></li>
  <li data-index="2">Item 2<button>Remove Image</button></li>
  <li data-index="3">Item 3<button>Remove Image</button></li>
  <li data-index="4">Item 4<button>Remove Image</button></li>
  <li data-index="5">Item 5<button>Remove Image</button></li>
  <li data-index="6">Item 6<button>Remove Image</button></li>
</ul>  
<button id="add-item">Add Image</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您需要一个循环来检查已删除图片的ID,并且对于ID大于所有被删除图片的图片,需要从其ID的值中减去1。