限制复制表单的数量

时间:2015-08-01 01:56:21

标签: javascript jquery html

目前我能够复制一个表单,但是我想设置一个限制它能够这样做的次数(复制)。是否有一种方法可以使它在例如我希望限制为5时,一旦表单总数达到5,“添加”按钮将被禁用(当我点击它时,它什么都不做)。但是,当我删除表单时,“添加”按钮再次变为功能(可以添加表单)。我只允许使用HTML CSS和Javascript。

$(function() {


  var addDiv = $('#addinput');
  var i = $('#addinput p').size() + 1;


  $('#addNew').live('click', function() {
    $('<label>Choose a picture<br><input type="file" ' + i + '" value="" /><img class="target" src="#" alt="Choose and Upload" /><a href="#" id="remNew">Remove</a></label><br>').appendTo(addDiv);
    i++;
    $('fieldset input').change(function() {
      if (this.files && this.files[0]) {
        var $target = $(this).next('.target');
        var reader = new FileReader();
        reader.onload = function(e) {
          $target.attr('src', e.target.result).width(150).height(112);
        };
        reader.readAsDataURL(this.files[0]);
      }
    });

    return false;
  });



  $('#remNew').live('click', function() {

    if (i > 2) {
      $(this).parents('label').remove();
      i--;
    }
    return false;
  });
});
.locationsector {
  border-radius: 5px;
  border: 5px solid black;
  width: 30%;
  margin-left: 0.79%;
  float: left;
  padding: 10px;
}
img {
  text-align: center;
  margin: 2%;
  display: inline-block;
  border: 10px solid #140E26;
  border-radius: 10px;
  padding: 5px;
  width: 150px;
  height: 112px;
}
#addNew {
  background: black;
  margin-left: 2%;
  padding: 5px;
  font-size: 15px;
  color: white;
  display: inline-block;
  width: 100px;
  border: 1px solid #140E26;
  border-radius: 10px;
  cursor: pointer;
  text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<fieldset class="locationsector" id="addinput">
  <legend>Test</legend>
  <p>
    <label for="north">Choose a Picture
      <br>
      <input type="file" required="required" />
      <img class="target" src="#" alt="Choose and Upload" />
    </label>
    <br>
    <a id="addNew">Add</a>
  </p>
</fieldset>

1 个答案:

答案 0 :(得分:0)

您已经有一个计数器i,这很好。 这将使您更容易限制复制:

// ...
        $('#addNew').live('click', function() {
            if(i > 5) {
                alert("Reached maximum number of fields.");
                return false;
            }
            $('<label>Choose a picture<br><input type="file" ' + i + '" value="" /><img class="target" src="#" alt="Choose and Upload" /><a href="#" id="remNew">Remove</a></label><br>').appendTo(addDiv);

// ...

alert来电是可选的(你提到什么都不做?)