【发布时间】:2017-08-22 06:45:42
【问题描述】:
我有一个 laravel 表单,它使用 JSON 对象作为问题和答案选择的来源。此表单允许文本答案、单选按钮和复选框。提交后,我使用 jQuery 获取所有具有 class=>response 的响应的值。然后将这些响应/答案附加到隐藏的文本区域字段。 我能够正确检索所有文本类型的响应,但是单选和复选框响应不正确。我没有捕获实际选择的单选/复选框,而是从每个单选/复选框返回最终的 JSON 索引值。例如,如果一个问题有 3 个单选按钮选项,则即使选择了“0”,所选答案的返回值也是“2”。如何获得单击的实际单选按钮/复选框值?如果我可以实际存储每个索引的文本值而不是检查的索引号,那就太好了。
我首先包含了 jQuery,然后是表单的一部分。
/*Script for collecting all patient data; script for collecting questionnaire answers and submitting as JSON string*/
$("#formq").submit(function(){
$("#formq").append("<textarea name='answers' id='answers' hidden='hidden'></textarea>");
var answers = new Object();
$(".response").each(function(){
answers[$(this).attr('name')] = $(this).val();
});
//Change answers object into json string; place answers into textarea and submit form
$("#answers").text(JSON.stringify(answers));
<div class="form-group">
@foreach($jsonObject['questions']['english'] as $key =>$question)
{{ Form::label('questions', $question['question'], array('class' => 'col-sm-9 display-label')) }}
@if(($jsonObject['question_metadata'][$key]['multi_value']) == false)
@if(($jsonObject['question_metadata'][$key]['text_value']) == true)
<div class="col-sm-8" style="padding-bottom: 15px;">
{{ Form::text($key, null, array('class' => 'form-control response')) }}
</div>
@elseif(($jsonObject['question_metadata'][$key]['text_value']) == false)
<div class="col-sm-9" style="padding-right: 15px">
@foreach($question['choices'] as $key2 => $choice)
<div class="col-sm-9 radio" style="padding-bottom: 15px">
{{ Form::radio($key, $key2, null, array('class' => 'response')) }} {{$choice}}
</div>
@endforeach
</div>
@endif
@elseif(($jsonObject['question_metadata'][$key]['multi_value']) == true)
<div class="col-sm-9" style="padding-right: 15px">
@foreach($question['choices'] as $key3 => $choice)
<div class="col-sm-9 checkbox" style="padding-bottom: 15px">
{{ Form::checkbox($key, $key3, null, array('class' => 'response')) }} {{ $choice }}
</div>
@endforeach
</div>
@endif
@endforeach
JSON snippet
{
"questions": {
"english": [
{
"question": "5. This question will provide a text box:"
},
{
"question": "6. Another text box question:"
},
{
"question": "7. This question will provide checkboxes so multiple items can be chosen:",
"choices": {
"0": "Option1",
"1": "Option 2",
"2": "Option 3",
"3": "Option 4",
"4": "Option 5",
"5": "Option 6",
"6": "Other"
}
},
{
"question": "8. This question will provide radio buttons:",
"choices": {
"0": "No",
"1": "Yes"
}
},
【问题讨论】:
-
你能看看我下面的答案吗?
-
很抱歉延迟回复。下面的解决方案不起作用。在查看它返回的 JSON 字符串时,涉及单选或复选框的问题现在返回问题的所有索引值。这是我返回的sn-p。如果您查看索引 16,您将看到零后跟“,”,然后是其他索引号,17 显示两个索引号,18 显示所有四个索引号。 { "14":"我的狗和仓鼠以及我所有的书对我来说都很有意义","15":"remember","16":"0, 123456","17":"01","18": "0123","19":"01","20":"01","21":"","22":"","23":"0","24":"0", "25":"0","26":"0""}