如何使用 jQuery 添加带有行的删除和添加按钮
how to add remove and add button with lines using jquery?
我想添加删除和添加按钮,行上的字段像这样悬停。
但是我的动态字段在button click
上生成我可以对上面的链接设计进行哪些更改?这是我的代码:
<tr>
<td colspan=7 width=800><div id="input1" style="margin-bottom:4px;" class="clonedInput"><select class="items" name="items" style="width:127px; float:left;" id="items"><option value="1" selected="selected" disabled="disabled"></option></select>
<textarea name="description" id="description" class="description" style="float:left; display: block; height: 30px; width:209px; border-radius:0px; margin: -1px 1px 0;"></textarea>
<input type="text" name="unitprice" id="unitprice" class="unitprice" style="float:left; display: block; height: 30px; width:106px; border-radius:0px; margin: -1px -1px 0;">
<input type="text" name="quantity" id="quantity" class="quantity" style="float:left; display: block; height: 30px; width:64px; border-radius:0px; margin: -1px 1px 0;">
<select name="firsttax" id="firsttax" style=" float:left; display: block; height: 31px; width:106px; border-radius:0px; margin: -2px -1px 0;"><option value="1" selected="selected" ></option></select>
<select name="secondtax" id="secondtax" style="float:left; display: block; height: 31px; width:107px; border-radius:0px; margin: -2px 0px 0;"><option value="1" selected="selected"></option></select>
<input type="text" name="linetotal" id="linetotal" class="linetotal" placeholder="0.00" readonly style="float:right; display: block; height: 31px; width:107px; border-radius:0px; background-color: #F0F0F0; text-align:right; margin: -31px -1px 0;">
</div>
</td></tr>
这是我生成动态字段javascript
代码:
$('#btnDel').attr('disabled','disabled');
$('#btnAdd').click(function () {
var num = $('.clonedInput').length;
var newNum = num + 1;
var newElem = $('#input' + num).clone().attr('id', 'input' + newNum);
newElem.find(':input').each(function () {
$('form select[name=items]').attr('name', 'items'+newNum);
$('form select[id=items]').attr('id', 'items'+newNum);
$('form textarea[name=description]').attr('name', 'description'+newNum);
$('form textarea[id=description]').attr('id', 'description'+newNum);
$('form input[name=unitprice]').attr('name', 'unitprice'+newNum);
$('form input[id=unitprice]').attr('id', 'unitprice'+newNum);
$('form input[name=quantity]').attr('name', 'quantity'+newNum);
$('form input[id=quantity]').attr('id', 'quantity'+newNum);
$('form select[name=firsttax]').attr('name', 'firsttax'+newNum);
$('form select[id=firsttax]').attr('id', 'firsttax'+newNum);
$('form select[name=secondtax]').attr('name', 'secondtax'+newNum);
$('form select[id=secondtax]').attr('id', 'secondtax'+newNum);
$('form input[name=linetotal]').attr('name', 'linetotal'+newNum);
$('form input[id=linetotal]').attr('id', 'linetotal'+newNum);
$('#itemscounter').val(+newNum);
});
$('#input' + num).after(newElem);
$('#btnDel').attr('disabled', false);
//if (newNum == 5) $('#btnAdd').attr('disabled', 'disabled');
});
$('#btnDel').click(function() {
var num = $('.clonedInput').length;
$('#input' + num).remove();
$('#btnAdd').attr('disabled',false);
if (num-1 === 1)
$('#btnDel').attr('disabled','disabled');
});
$('#btnDel').attr('disabled','disabled');
这是我的按钮:
<input type="button" class="btn btn-success" id="btnAdd" value="Add Row" />
<input type="button" class="btn btn-danger" id="btnDel" value="Remove Row" />
嗯,问题很酷。 :)这是解决方案。
网页标记
<div class="formContainer">
<div class="row">
<div class="flt">
<select name="items" id="items">
<option value="1">1</option>
</select>
</div>
<div class="flt"><textarea name="description" id="description"></textarea></div>
<div class="flt"><input type="text" name="unitprice" id="unitprice" /></div>
<div class="flt"><input type="text" name="quantity" id="quantity" /></div>
<div class="flt">
<select name="firsttax" id="firsttax">
<option value="1">1</option>
</select>
</div>
<div class="flt">
<select name="secondtax" id="secondtax">
<option value="1">1</option>
</select>
</div>
<div class="flt"><input type="text" name="linetotal" id="linetotal" readonly /></div>
<div class="flt"><input type="button" class="addRow" name="addRow" value="+" /></div>
<div class="flt"><input type="button" class="removeRow" name="removeRow" value="-" /></div>
<div class="clr"></div>
</div>
</div>
.CSS
.fieldRow {
margin-bottom: 20px;
overflow: hidden;
}
.fieldRow .field {
float: left;
margin: 0 10px 0 0;
}
.fieldRow select.field {
padding: 1px;
}
.buttonHolder {
border-top: solid 5px #ccc;
padding: 10px;
}
#template .button.remove {
display: none;
}
和JavaScript:
$(function(){
var rowItem = $(".row");
$(".formContainer").on("click", ".addRow", function(){
var newItem = rowItem.clone(),
rowIndex = $(".row").length;
$(":input", newItem).each(function(c, obj){
$(obj).attr("id", $(obj).attr("name") + rowIndex);
});
//$(this).parent().parent().after(newItem); // adds just after the current line
$(".formContainer").append(newItem); // adds At the end of the container
})
.on("click", ".removeRow", function(){
if($(".row").length > 1){
$(this).parents(".row").remove();
}
});
});
有两种方法可以添加行:
- 如果要在当前行之后添加
- 如果要在窗体末尾添加行
两者都在上面的JS中,(一个是评论的)
这是工作演示:http://jsfiddle.net/ashishanexpert/8pJ4P/1/
如果你喜欢动画,你可以看看这个:http://jsfiddle.net/ashishanexpert/8pJ4P/4/
像这样的事情怎么样:
jQuery(document).on("ready", function() {
initAddRows();
});
function initAddRows() {
var template = jQuery("#template"),
dataRows = jQuery("#dataRows");
jQuery("#btnAdd").on("click", function() {
var newRow = template.clone(true, true),
fieldRows = dataRows.find(".fieldRow");
newRow.attr('id', 'row' + (fieldRows.length + 1)).find('[id]').each(function() {
jQuery(this).attr("id", jQuery(this).attr("id") + (fieldRows.length + 1));
});
fieldRows.filter(":last").after(newRow);
});
dataRows.on("click", ".remove", function() {
jQuery(this).parent().remove();
});
}
.fieldRow {
margin-bottom: 20px;
overflow: hidden;
}
.fieldRow .field {
float: left;
margin: 0 10px 0 0;
}
.fieldRow select.field {
padding: 1px;
}
.buttonHolder {
border-top: solid 5px #ccc;
padding: 10px;
}
#template .button.remove {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dataRows">
<div class="fieldRow" id="template">
<select class="items field" name="items" id="items" disabled="disabled">
<option value="1" selected="selected">Value</option>
<option value="1"></option>
<option value="1"></option>
</select>
<textarea name="description" id="description" class="description field"></textarea>
<input type="text" name="unitprice" id="unitprice" class="unitprice field">
<input type="text" name="quantity" id="quantity" class="quantity field">
<select name="firsttax" id="firsttax" class="field">
<option value="1" selected="selected">Value</option>
</select>
<select name="secondtax" id="secondtax" class="field">
<option value="1" selected="selected">Value</option>
</select>
<input type="text" name="linetotal" id="linetotal" class="linetotal field" placeholder="0.00" readonly>
<input type="button" class="button remove" id="btnDel" value="Remove Row" />
</div>
</div>
<div class="buttonHolder">
<input type="button" class="button add" id="btnAdd" value="Add Row" />
</div>
相关文章:
- 根据Select值添加/删除表行
- 添加/删除类淡入淡出不起作用
- p5.js声音库:如何添加/删除p5.第5页中的短语().零件()
- 在django表单集中添加/删除表单的Javascript
- 添加/删除子元素
- 添加/删除/更改输入文本的部分值
- jQuery - 添加删除类 - 设置输入值
- 向具有唯一Id的表添加/删除行
- DateTimePicker:函数从minDate maxDate添加删除日期
- 由 JavaScript 控制的 CSS3 单向转换在按顺序添加/删除类时不起作用
- 添加/删除类在 Chrome 中对我不起作用
- JQuery 测试元素是可见的还是隐藏的,然后添加删除类
- Jquery切换和添加/删除
- 克隆字段上的“添加-删除”按钮
- (X-Editable)与(Select2标签)不工作,可以't填充当前标签并跟踪添加/删除的标签
- 添加/删除要与Jquery进行比较的产品
- 添加/删除类并使用Cookie记住所选内容
- 如何使用延迟添加/删除类
- 如何根据数组内容添加/删除数组中的元素
- 单击单选按钮,添加/删除表单元素的类