【发布时间】:2018-08-08 16:19:44
【问题描述】:
我正在创建一个问卷创建者。我的问题是我无法弄清楚将类似代码实现到不同 div 的方法。对于第一个问题,一切正常。 add-answer 按钮添加了一个答案,但只要我添加一个新问题,类似的按钮就会停止工作。在 cmets 中,您可以看到我尝试过的内容。
感谢您的帮助
$(document).ready(function(){
var quest=2;
var counter=2;
$("#addButton").click(function () {
if(counter>10){
alert("Only 10 answers allowed");
return false;
}
var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + counter);
newTextBoxDiv.after().html('<label>Answer #'+ counter + ' : </label>' +
'<input type="text" name="textbox' + counter +
'" id="textbox' + counter + '" value="" >'
);
newTextBoxDiv.appendTo("#TextBoxesGroup");
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
counter++;
});
$("#removeButton").click(function () {
if(counter==2){
alert("You have to have at least one possible answer available");
return false;
}
counter--;
$("#TextBoxDiv" + counter).remove();
});
$("#btn1").click(function () {
var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + quest);
newTextBoxDiv.after().html(
'<br><label>Question #'+ quest + '</label>' +
'<input type="text" name="quest' + quest +
'" id="quest' + quest + '" value="" placeholder="Insert the question">'+
'<label>Description</label>'+
'<textarea id="descr+"'+quest+' name="descr"'+quest+' "value="" placeholder="Insert clarifications if needed"></textarea> '+
'<br><label>Select type of question</label>'+
'<label><input type="radio" name="type'+quest+' " id="a'+quest+'" value="checkbox'+quest+'" <label for="a+'+quest+'"> Multiple choice</label> </label>'
+'<label><input type="radio" name="type'+quest+' " id="b'+quest+'" value="radio'+quest+'" '+
'<label for="b+'+quest+'"> One choice </label></label>'+
'<label> <input type="radio" name="type'+quest+' " id="c'+quest+'" value="text'+quest+'" '+
'<label for="c+'+quest+'"> Text</label></label>'+
'<div id="TextBoxesGroup'+quest+'"> <div id="TextBoxDiv'+quest+'"> <label>Answer #1 : </label><input type="textbox" id="textbox'+quest+' " </div> </div><input type="button" value="Add Answer'+quest+' " id="addButton'+quest+'" class="test"> <input type="button" value="Remove Answer'+quest+' " id="removeButton'+quest+' ">'
);
newTextBoxDiv.appendTo("#question");
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
quest++;
});
$("input[type='radio']#c").click(function(){
$("#addButton").prop('disabled',true);
for (var i =counter; i >= 2; i--) {
$("#TextBoxDiv"+i).remove();
}
});
$("input[type='radio']#a").click(function(){
$("#addButton").prop('disabled',false);
});
$("input[type='radio']#b").click(function(){
$("#addButton").prop('disabled',false);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mom">
<div class="header">
<h2>Questionnaire Creator</h2>
</div>
<div class="nav">
<p> Insert the questionnaire name here</p>
<textarea id="info" name="info"></textarea>
</div>
<div id="question">
<label for="name">Question #1<br></label><input type ="text" id="quest1" name="quest" placeholder="Insert the Question">
<label for="descr">Description<br></label><textarea id="subject" name="subject" placeholder="Insert clarifications if needed"></textarea><br>
<label for="type">Select type of the question<br></label>
<input type="radio" name="type" value="checkbox" id="a">
<label for="a">Multiple choice</label><br>
<input type="radio" name="type" value="radio" id="b">
<label for="b">One choice</label><br>
<input type="radio" name="type" value="text" id="c">
<label for="c">Text</label><br>
<div id='TextBoxesGroup'>
<div id="TextBoxDiv1">
<label>Answer #1 : </label><input type='textbox' id='textbox1' >
</div>
</div>
<br>
<br>
<input type='button' value='Add Answer' id='addButton' class="test">
<input type='button' value='Remove Answer' id='removeButton' class="test">
<br>
</div>
<button id="btn1">Add new question</button>
<button id="btn3" type="submit">submit</button>
【问题讨论】:
-
ID 必须是唯一的
-
您应该了解
classandid之间的区别。如果要序列化行为,则需要从 id 更改为 classes。 -
@AndreiGheorghui 好吧,我觉得我需要两者,因为我的意图是通过 $(".class") 访问按钮(在我的代码中称为 .test),然后检查最后一个数字id,我分配给新添加的类,例如