저는 양식으로 퀴즈를 만드는 프로젝트를 진행하고 있습니다. 나는 사용자가 & 질문 및 삭제 옵션을 추가 할 수 있습니다 내 양식이Jquery 동적 양식 데이터를 json으로 변환
[
{
"questions": [
{
"question": "Who is Mark Zuckerberg?",
"options": [
{
"answer": "Facebook CEO",
"correct": 1
},
{
"answer": "Google Programmer",
"correct": 0
}
]
},
{
"question": "Who is the founder of Apple?",
"options": [
{
"answer": "Mark Zuckerberg",
"correct": 0
},
{
"answer": "Bill Gates",
"correct": 0
},
{
"answer": "Steve Jobs",
"correct": 1
}
]
}
]
}
]
: 나는 그것을 할 같이 표시됩니다 JSON 형식으로 제출되어야합니다. 사용자는 옵션 목록에서 정답을 선택할 수도 있습니다.
여기는 JSFiddle link입니다.
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="row">
<button id="btn-add-tab" type="button" class="btn btn-primary pull-right">Add Question</button>
</div>
<div class="row">
<form id="form">
<!-- Nav tabs -->
<ul id="tab-list" class="nav nav-tabs" role="tablist">
<li class="active"><a href="#tab1" tab="1" role="tab" data-toggle="tab">Question 1</a></li>
</ul>
<!-- Tab panes -->
<div id="tab-content" class="tab-content">
<br>
<div class="tab-pane fade in active" id="tab1">
<div class="input-group">
<input type="text" class="form-control" id="question" placeholder="Your question" required>
<span class="input-group-btn">
<button class="btn btn-success" id="add-option" type="button">Add Option</button>
</span>
</div>
<br>
<div id="options">
<!--- OPTIONS -->
<div class="well">
<textarea id="answer" class="form-control" placeholder="Your answer" required></textarea>
<div class="radio"><label><input type="radio" id="correct-answer" name="correct-ans-1" required>Correct Answer</label></div>
</div>
<!--- END OPTIONS -->
</div>
</div>
</div>
</div>
<div class="row">
<button id="btn-get-json" type="submit" class="btn btn-success pull-right btn-block">Get JSON</button>
</div>
</form>
</div>
</div>
</div>
myjavascript 코드를 사용하면 첫 번째 질문에서 json 만 표시되는 오류가 발생합니다. 또한 옵션 목록도 표시하지 않습니다. 내 코드에서는 양식의 모든 입력 필드를 얻기 위해 each
을 사용했습니다. 그런 다음 배열을 JSON으로 변환하려면 JSON.stringify();
을 사용했습니다.
$("#form").submit(function(e) {
var jsonArr = [];
var obj = {};
var questionsArr = [];
var questionsCont = {};
var tabs = $("#form :input:not(input[type='submit'],button[type='button'])");
$(tabs).each(function(k,v){
var id = $(this).attr("id");
var value = $(this).val();
questionsCont[id] = value;
});
questionsArr.push(questionsCont);
obj["questions"] = questionsArr;
jsonArr.push(obj);
var json = JSON.stringify(jsonArr, null, "\t");
alert(json);
e.preventDefault();
});
나는 위의 게시물에서 보듯이 json 결과를 얻고 싶습니다. 코드를 테스트하려면 JSFiddle link을 참조하십시오.
도움을 주시면 감사하겠습니다. 고맙습니다!
! 감사! 그러나 각 질문에 두 개 이상의 정답 (라디오 버튼)을 선택하는 것을 피하는 방법은 무엇입니까? – Jacob
라디오 버튼 그룹 내에서 단 하나의 라디오 버튼 만 선택되게하려면, 그들은 같은'name' 속성을 가져야합니다. 그러나 귀하의 경우 여러 개의 그룹이 있으므로 각 그룹의 이름이 달라야합니다. 각 탭마다 고유 한 번호가 있음을 확인하고이를 그룹 이름 지정에 사용합니다. 첫 번째 탭은 'correct-ans [1]'과 같이'[1]'로 끝나는 입력 요소로 구성됩니다. 두 번째 탭은'[2] '로 끝나는 요소로 구성됩니다. 여기 [수정] (http://codepen.io/anon/pen/mErbzq?editors=0010)이 있습니다. – Mikey