动态删除文本框
dynamically removing textbox
我正在动态添加和删除文本框,尽管我可以成功添加文本框,但每次我必须重新加载浏览器以删除文本框时,单击删除按钮时都无法删除文本框单击删除按钮后删除按钮。
这是我用于添加和删除文本框的 JavaScript。
<script type="text/javascript">
$(document).ready(function(){
var COUNTER = 3;
var labelArray = ["answerswer", "rank"];
$("#addButton").click(function () {
for(var i = 0; i < labelArray.length; i++){
createNewInput(labelArray[i]);
}
COUNTER++;
});
function createNewInput(label){
var tbDiv = $('#TextBoxesGroup');
var str = '<div class="control-group">';
str += '<label class="control-label">' + label + " " + COUNTER + '</label>';
str += '<div class="controls">';
str += '<input type="text" id="' + label + '_' + COUNTER + '" name="'+ label +'_' + COUNTER + '" />';
str += '</div>';
str += '</div>';
tbDiv.append(str);
};
$("#removeButton").click(function () {
if(COUNTER==3){
alert("No more textbox to remove");
return false;
}
COUNTER--;
$("#TextBoxesGroup" +COUNTER).remove();
});
});
</script>
这是我的文本框 HTML。
<div id="TextBoxesGroup">
<div class="control-group">
<label class="control-label">answer_1: </label>
<div class="controls">
<input type="text" name="answerswer_1" id="answerswer_1" required="true" >
</div>
</div>
<div class="control-group">
<label class="control-label" for="rank1">Rank 1</label>
<div class="controls">
<input type="text" name="rank_1" id="rank_1" required="true">
</div>
</div>
<div class="control-group">
<label class="control-label">answer_2: </label>
<div class="controls">
<input type="text" name="answerswer_2" id="answerswer_2" required="true" >
<button class="btn btn-mini btn-danger" data-toggle="button" type="button" id="removeButton">
-
</button>
<button class="btn btn-mini btn-success" data-toggle="button" type="button" id="addButton">
+
</button>
</div>
</div>
<div class="control-group">
<label class="control-label" for="rank1" required="true">Rank 2</label>
<div class="controls">
<input type="text" name="rank_2" id="rank_2" required="true">
</div>
</div>
</div>
任何人都可以知道它有什么问题,以至于我无法在单击按钮时删除文本框?谢谢
您需要在此处修改 2 件事:
1-附加新元素时,在末尾使用当前的COUNTER值标记其持有div,以便以后轻松定位它们(如下面的步骤2)。
所以添加新元素应该是这样的:
function createNewInput(label){
var tbDiv = $('#TextBoxesGroup');
var str = '<div class="control-group'+COUNTER+'">';
str += '<label class="control-label">' + label + " " + COUNTER + '</label>';
...
...
取而代之的是:
function createNewInput(label){
var tbDiv = $('#TextBoxesGroup');
var str = '<div class="control-group">';
str += '<label class="control-label">' + label + " " + COUNTER + '</label>';
2-删除元素时,我们将针对那些在其类名末尾具有当前COUNTER值的元素,这样您将删除最后一组,并且仍然检查组是否为3或更低,不应发生删除。
$("#removeButton").click(function () {
if(COUNTER==3){
alert("No more textbox to remove");
return false;
}
COUNTER--;
$(".control-group"+COUNTER).remove();
});
});
更新:检查我更新的小提琴 http://jsfiddle.net/qqqyC/1/
注意:考虑到我们将 COUNTER 值附加到class
名称的末尾。 如果类给你任何样式,它将不起作用。 在这种情况下,不应使用类名作为目标属性,而应考虑使用另一个属性/属性标记新组,并在删除元素时定位此属性/属性。
如果要将
$("#removeButton").click(function () {
绑定到动态添加的元素,请使用.on
。 它应该是
$("#removeButton").on("click", function () {
//.....
});
$(document).ready(function(){
var COUNTER = 3;
var labelArray = ["answerswer", "rank"];
$("#addButton").click(function () {
for(var i = 0; i < labelArray.length; i++){
createNewInput(labelArray[i]);
}
COUNTER++;
});
function createNewInput(label){
var tbDiv = $('#TextBoxesGroup');
var str = '<div class="control-group">';
str += '<label class="control-label">' + label + " " + COUNTER + '</label>';
str += '<div class="controls">';
str += '<input type="text" id="' + label + '_' + COUNTER + '" name="'+ label +'_' + COUNTER + '" />';
str += '</div>';
str += '</div>';
tbDiv.append(str);
};
$("#removeButton").click(function () {
if(COUNTER==3){
alert("No more textbox to remove");
return false;
}
COUNTER--;
$("#answer_" +COUNTER).parent('div').parent('div').remove();
$("#rank_" +COUNTER).parent('div').parent('div').remove();
});
});
请更新脚本或检查此小提琴 http://jsfiddle.net/Cne2Q/
$("#removeButton").click(function () {
if(COUNTER==3){
alert("No more textbox to remove");
return false;
}
COUNTER--;
$("#TextBoxesGroup" +COUNTER).remove();
});
你在这里做什么,- 你试图删除一个像$("#TextBoxesGroup1")
显然不存在的元素。因此,您需要做的是修改创建新输入,如下所示:
function createNewInput(label){
var tbDiv = $('#TextBoxesGroup');
var str = '<div id="textBoxContainer'+COUNTER+'" class="control-group">';
str += '<label class="control-label">' + label + " " + COUNTER + '</label>';
str += '<div class="controls">';
str += '<input type="text" id="' + label + '_' + COUNTER + '" name="'+ label +'_' + COUNTER + '" />';
str += '</div>';
str += '</div>';
tbDiv.append(str);
};
和您的删除按钮
$("#removeButton").click(function () {
if(COUNTER==3){
alert("No more textbox to remove");
return false;
}
COUNTER--;
$("#textBoxContainer" +COUNTER).remove();
});
相关文章:
- 兰吉 |如何在 span 标签上使用单击事件删除突出显示的文本
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何动态添加和删除多个类名的文本
- jQuery从标签中删除括号/文本
- 单击文本时删除文本框的默认数据
- 添加/删除/更改输入文本的部分值
- 在显示/隐藏中单击时删除的文本
- 单击时从表单中删除特定文本
- 使用VBScript或Javascript从文本框(文本区域)中删除最后一行空/空行
- 使用删除文本创建新行
- Wordpress TinyMCE在从文本切换到视觉时,如果锚标记包裹块元素,则会删除锚标记
- 为什么jQuery正在删除文本的最后一个字符
- 如何删除特定文本短语的所有实例
- 通过点击文本区域添加和删除多个标签
- 隐藏<标签>abc标签>之间的文本 - 删除“ ABC”
- JavaScript 拆分字符串 选定的文本删除
- jQuery淡入/淡出替换文本删除链接
- 遍历元素列表并根据内部文本删除元素上的游标样式
- 将逗号后的文本删除到行尾
- 需要有关jQuery条件的帮助,该条件基于匹配的文本删除容器元素