可以't在javascript中递减var
Can't Decrement var in javascript
我是Javascript的新手,正在构建一个动态Web表单。我的表在重命名新行(添加带有"index"的新名称)方面工作得很好,但当我删除行并创建新行时,它不起作用,因为我的"index--;"不起作用。注意,当我说桌子只是一种说话方式。。。我的代码出了什么问题?
代码段
$(document).ready(function() {
var index = 0; //
$('.multi-field-wrapper').each(function() {
var $wrapper = $('.multi-fields', this);
$(".add-field", $(this)).click(function(e) {
index++;
$novaLinha = $('.multi-field:first-child', $wrapper).clone(true)
$novaLinha.appendTo($wrapper).find('input').val('').focus();
$novaLinha.find('label').attr('class', 'hideMobile').end();
$novaLinha.find('[id="itemLinha"]').attr('class', 'row top-buffer-novoItem col-md-12 control-group' + index).end();
$novaLinha.find('[name="insumo"]').attr('name', 'insumo ' + index).end();
$novaLinha.find('[name="detalhe"]').attr('name', 'detalhe ' + index).end();
$novaLinha.find('[name="quantidade"]').attr('name', 'quantidade ' + index).end();
$novaLinha.find('[name="unidade"]').attr('name', 'unidade ' + index).end();
});
$('.multi-field .remove-field', $wrapper).click(function() {
if ($('.multi-field', $wrapper).length > 1) { // Quando se apaga a primeira linha quando há mais de uma, não aparece o título da tabela no desktop
index--;
$(this).parent().parent().parent('.multi-field').remove();
}
});
});
};
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="multi-field-wrapper">
<div class="row top-buffer-inicio " >
<div class="multi-fields col-md-12">
<div class="multi-field">
<div class = "row top-buffer-novoItem col-md-12 control-group" id="itemLinha">
<div class="col-md-3 form-group">
<label for="insumo">INSUMO</label>
<div data-name="insumo">
<input type="text" name='insumo' placeholder='Ex. Bloco de Concreto' class="form-control"/>
</div>
</div>
<div class="col-md-4 form-group">
<label for="detalhe"> DETALHE </label>
<div class = "" data-name="detalhe">
<input type="text" name='detalhe' placeholder='Ex. Estrutural 14x19x39' class="form-control"/>
</div>
</div>
<div class="col-md-1 form-group">
<label for="quantidade"> QTD </label>
<div class = "" data-name="quantidade">
<input type="text" name='quantidade' placeholder="Ex. 55" class="form-control"/>
</div>
</div>
<div class="col-md-3 form-group">
<label for="unidade"> UNIDADE </label>
<div class = "" data-name="unidade">
<input type="text" name='unidade' placeholder='Ex. Unitário' class="form-control"/>
</div>
</div>
<div class="col-md-1 col-xs-12 ">
<label > </label>
<div class = "remove-field ">
<div name="remove" class='pull-right btn btn-danger btn-block glyphicon glyphicon-remove '></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row top-buffer-novoItem">
<div class="col-md-12">
<div class="col-md-2 pull-right form-group">
<div id="add_row" class="add-field btn btn-grey pull-right">Novo Item</div>
</div>
</div>
</div>
</div>
看起来问题是您希望调用在创建动态元素之前注册的click事件。创建元素后,单击事件不会神奇地连接到元素。您需要在每次创建元素时绑定事件,或者需要使用事件委派。
更改
$('.multi-field .remove-field', $wrapper).click(function() {
至
$($wrapper).on("click", '.multi-field .remove-field', function() {
您的代码适用于我的FIDDLE,即使您应该按照epascarelo发布的方式委派点击
要获得更好的计数器,只需使用添加的多字段长度:
小提琴
$(".add-field", $(this)).click(function(e) {
var index = $('.multi-fields .multi-field').length;
更好的是:由于除了名称之外,您不将索引用于任何内容,因此,假设您的后端是PHP,请这样做-将[]添加到模板中的所有输入字段:
<input type="text" name='detalhe[]'
由于您删除了单击removed的任何字段,因此使用当前代码,您实际上可以通过添加3、删除中间的一个并再添加一个来创建相同的名称。
相关文章:
- javascript中对象构造函数中的var属性与this.properties
- JavaScript-的含义:var DndUpload=函数(inputElem){};
- Understanding Javascript scope with "var that = this&qu
- 如何使用javascript var引用Mongo DB集合's字段
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 更改json/javascript对象var名称或从数字var中检索值
- JavaScript中let和var之间的区别
- php中的javascript var太长
- Javascript,var name=1,“;类型名称“;给出“;字符串”;
- 如何让这个javascript var在HTML页面上工作
- 将var javascript转换为java变量
- 如何使用 onchange 在 var javascript 中检查 (.) 句号
- 如何使用var javascript更新输入类型=“文本”值甚至更改
- 如何将函数名称与 var javascript 连接
- 如何在 appendTo 中添加 var javascript
- 如何在 innerHTML 中使用 var javascript
- PHP var->Javascript->PHP
- 控制器和输入表单html使用var Javascript
- 当变量已经是一个参数时,是否应该使用var (Javascript)