我有一个代码可以动态添加和删除表单控件。添加和删除方法工作正常。但我喜欢如果只存在一个控件,而不是删除它。
我在$(document).ready scope:
之外定义了下一个varvar Alumnos = {};
并在$(文件).ready:
内初始化// Valor inicial de casilleros renderizados.
Alumnos.count = 3;
删除控件的方法是:
// Elimina un bloque
$(document).on('click','.closable',function(){
if(Alumnos.count > 1){
var idRow = $(this).attr('data-toggle');
var victim = $(idRow + " .row-fluid:last-child");
victim.remove();
var childs = $(idRow).children();
if(childs.length === 0)
{
$(idRow).remove();
$(this).remove();
Alumnos.count -= 1;
}
}
console.log(Alumnos.count);
return false;
});
删除后,Alumnos.count值仍然存在。有什么想法吗?
更新1
当用户点击“添加更多”时,代码从原型创建一个包含3个控件的表单行。 因为,我不能用儿童数。 我需要用户不要删除所有控件。
答案 0 :(得分:2)
我认为你应该:
if(Alumnos.count >= 1){ //Probably if there is only 1, it's erasable. You had >
将减量移到外面,如下:
var childs = $(idRow).children();
if(childs.length === 0)
{
$(idRow).remove();
$(this).remove();
}
Alumnos.count -= 1; //This was moved
希望这会有所帮助。干杯
答案 1 :(得分:0)
感谢您的所有回复!!我找到了控制元素删除的方法与子计数。可能不是最好的代码,但有效。
$(document).on('click','.closable',function(){
// Get the id of the row.
var dataToggle = $(this).attr('data-toggle');
// Get the row
var row = $(dataToggle);
// if isnt first row (#id0), ok, remove all if you want.
// if is first row (#id0) and have more than one child, happy remove ^^
if((dataToggle === "#id0" && row.children().length > 1) || dataToggle !== "#id0"){
// remove code...
}
return false;
});