137 lines
3.7 KiB
JavaScript
137 lines
3.7 KiB
JavaScript
//处理问题的函数, handler为回调
|
|
function handle_question(handler, question)
|
|
{
|
|
return handler(question);
|
|
}
|
|
|
|
//显示试题默认处理函数
|
|
function render_question(question, container, c)
|
|
{
|
|
c = c || '';
|
|
var con = $('#' + container);
|
|
var html = '';
|
|
var ay = new Array();
|
|
var len = question.length;
|
|
var a_len = 0;
|
|
var q = null;
|
|
var a = null;
|
|
var i = 0;
|
|
var j = 0;
|
|
var q_type = '';
|
|
var q_no = '';
|
|
var q_display = '';
|
|
var a_no = '';
|
|
var a_val = '';
|
|
var a_ele_name = '';
|
|
var a_ele_id = '';
|
|
|
|
for (i = 0; i < len; ++ i){
|
|
q = question[i];
|
|
q_type = q.q_type;
|
|
q_no = q.q_no;
|
|
q_real_no = q.q_real_no;
|
|
q_display = q.q_display;
|
|
a = q['answer'];
|
|
a_len = a.length;
|
|
ay.push("<div id='q_div_" + i +"' class='" + c + "' q_no='" + q_no +"' q_display='" + q_display + "' q_real_no='" + q_real_no + "' q_type='" + q_type +"'>");
|
|
ay.push( "<p id='p_quest_title'>" + q_no + "." + q.q_display + "</p>");
|
|
for (j = 0; j < a_len; ++ j){
|
|
switch(q_type){
|
|
case 'radio':
|
|
case 'checkbox':
|
|
{
|
|
a_ele_name = "quest_" + q.q_no;
|
|
a_ele_id = a_ele_name + "_ans_" + a[j].a_no;
|
|
a_no = a[j].a_no;
|
|
a_value = a_ele_id;
|
|
ay.push("<div>");
|
|
ay.push( "<span class='p_ans_no'>" + a_no + ")</span>");
|
|
ay.push( "<input type='" + q_type +"' name='" + a_ele_name + "' id='" + a_ele_id + "' value='" + a_value + "' a_no='" + a_no + "'/>");
|
|
ay.push( "<label for='" + a_ele_id +"'>" + a[j].a_display + "</label>");
|
|
ay.push("</div>")
|
|
break;
|
|
}
|
|
case 'textarea':
|
|
{
|
|
ay.push("<div q_type='" + q_type + "'><textarea name='" + a_ele_name + "id='" + a_ele_id + "'/></div>");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
ay.push("</div>");
|
|
}
|
|
html = ay.join(" ");
|
|
con.html(html);
|
|
}
|
|
//显示试题处理函数,handler为回调函数
|
|
function display_question(handler, question, container, c)
|
|
{
|
|
handler(question, container, c);
|
|
}
|
|
|
|
//获取答案默认处理函数
|
|
function create_answer(container, c)
|
|
{
|
|
var ay = [];
|
|
var q = null;
|
|
var q_no= '';
|
|
var q_display = '';
|
|
var q_type = '';
|
|
var a_no=''
|
|
var a_display = '';
|
|
var a_value='';
|
|
var a_checked_no = '';
|
|
var ele_label = null;
|
|
|
|
var q_idx = -1;
|
|
|
|
$('.' + c).each(function(idx, obj){
|
|
q_no = $(obj).attr('q_no');
|
|
q_display = $(obj).attr('q_display');
|
|
q_type = $(obj).attr('q_type');
|
|
q_real_no = $(obj).attr('q_real_no');
|
|
var answer = [];
|
|
var flag = false;
|
|
if (q_type == 'checkbox' || q_type == 'radio'){
|
|
//遍历input
|
|
($('div input:checked', obj)).each(function(idx, ele){
|
|
a_no = $(ele).attr('a_no');
|
|
ele_label = ele.nextSibling;
|
|
if (ele_label.tagName != 'label'){
|
|
ele_label = ele_label.nextSibling;
|
|
}
|
|
a_display = ele_label.innerHTML;
|
|
a_value = $(ele).attr('value');
|
|
a_checked_no = a_no;
|
|
var a = {a_no:a_no, a_display:a_display, a_value:a_value, a_checked_no:a_checked_no};
|
|
answer.push(a);
|
|
flag = true;
|
|
});
|
|
//判断没有选择答案处理
|
|
if (flag != true && q_idx == -1){
|
|
q_idx = idx + 1;//设置没答题的题号
|
|
}
|
|
q = {q_no:q_no, q_display:q_display, q_type:q_type, q_real_no:q_real_no, answer:answer};
|
|
}
|
|
else{
|
|
($('div textarea', obj)).each(function(idx, ele){
|
|
a_value = ele.value;
|
|
var a = {a_no:'', a_display:'', a_value:a_value, a_checked_no:''};
|
|
answer.push(a);
|
|
//判断没有填写答案处理
|
|
if (a_value == '' && q_idx == -1){
|
|
q_idx = idx + 1;//设置没答题的题号
|
|
}
|
|
});
|
|
q = {q_no:q_no, q_display:q_display, q_type:q_type, q_real_no:q_real_no, answer:answer};
|
|
}
|
|
ay.push(q);
|
|
});
|
|
return {ansdata:ay, tip_idx:q_idx};
|
|
}
|
|
|
|
//获取答案 handler为回调函数
|
|
function get_answer_data(handler, container, c)
|
|
{
|
|
return handler(container, c);
|
|
} |