var holders; var answers; var redWill = "*"; var singleEditDiv = null; /** * 问卷编辑 */ var QM = { questionnaire : { init : function(json) { holders = $.parseJSON(json); if (holders == null) { holders = new Array(); } var $maindiv = $("#maiDiv"); $(holders).each(function(a) { var holder = holders[a]; var $div = $("
"); var $topic = QM.questionnaire._createDiv(holder); $div.append($topic); var status = $("input[name='content.status']").val(); if(status == 0){ var $editdiv = QM.questionnaire._createEditDiv(holder); $editdiv.hide(); $div.append($editdiv); $div.hover(function() { $editdiv.show(); }, function() { $editdiv.hide(); }); } $maindiv.append($div); $maindiv.append("
"); }); }, /** * 新建试题 */ createHolder : function(type) { var holder = new Object(); holder.id = Math.uuid(); holder.type = type; holder.topic = "请输入标题?"; if (type.indexOf("test") >= 0) { holder.code = 5; } switch (type) { case 'voteradio': case 'radio': case 'check': //多选 case 'votecheck': { //投票多选 var options = new Array(); var option = new Object(); option.name = "选项"; options.add(option); var option2 = new Object(); option2.name = "选项"; options.add(option2); holder.options = options; holder.order = 1; break; } case 'input': { holder.isdefault = false; holder.defaultValue = ""; holder.heightValue = 1; holder.widthValue = "50%"; holder.underlineStyle = false; break; } case 'matrixradio': { holder.leftLabel = "外观\n性能"; var options = new Array(); var option1 = new Object() option1.name = "非常满意"; var option2 = new Object() option2.name = "满意"; var option3 = new Object() option3.name = "一般"; var option4 = new Object() option4.name = "不满意"; var option5 = new Object() option5.name = "非常不满意"; options.add(option1); options.add(option2); options.add(option3); options.add(option4); options.add(option5); holder.options = options; break; } case 'matrixcheck': { holder.leftLabel = "百度\n谷歌\n搜狗"; var options = new Array(); var option1 = new Object() option1.name = "速度快"; var option2 = new Object() option2.name = "准确率多"; var option3 = new Object() option3.name = "信息量多"; var option4 = new Object() option4.name = "界面美观"; options.add(option1); options.add(option2); options.add(option3); options.add(option4); holder.options = options; break; } case 'matrixinput': { // 矩阵填空题 holder.leftLabel = "外观\n性能"; break; } case 'coderadio': { // 评分单选题 var options = new Array(); var option = new Object(); option.name = "选项"; option.code = 1; option.isNull = false; options.add(option); var option2 = new Object(); option2.name = "选项"; option2.code = 2; option2.isNull = false; options.add(option2); var option3 = new Object(); option3.name = "选项"; option3.isNull = true; options.add(option3); holder.options = options; break; } case 'codecheck': { // 评分多选题 var options = new Array(); var option = new Object(); option.name = "选项"; option.code = 1; option.isNull = false; options.add(option); var option2 = new Object(); option2.name = "选项"; option2.code = 2; option2.isNull = false; options.add(option2); var option3 = new Object(); option3.name = "选项"; option3.isNull = true; options.add(option3); holder.options = options; break; } case 'codematrix': { // 评分矩阵题 holder.leftLabel = "外观\n性能"; var options = new Array(); var option1 = new Object() option1.name = "选项"; option1.code = 1; option1.isNull = false; var option2 = new Object() option2.name = "选项"; option2.code = 2; option2.isNull = false; var option3 = new Object() option3.name = "选项"; option3.code = 3; option3.isNull = false; var option4 = new Object() option4.name = "选项"; option4.code = 4; option4.isNull = false; var option5 = new Object() option5.name = "选项"; option5.code = 5; option5.isNull = false; options.add(option1); options.add(option2); options.add(option3); options.add(option4); options.add(option5); holder.options = options; break; } case 'testcheck': case 'testradio': { var options = new Array(); var option = new Object(); option.name = "选项"; option.isAnswer = true; options.add(option); var option2 = new Object(); option2.name = "选项"; option2.isAnswer = false; options.add(option2); holder.options = options; holder.code = 5; break; } case 'testinput': { holder.isdefault = false; holder.defaultValue = ""; holder.heightValue = 1; holder.widthValue = "50%"; holder.underlineStyle = false; holder.code = 5; holder.standardanswer = ""; holder.answer = ""; break; } case 'head':{ holder.heightValue = 1; holder.widthValue = "50%"; break; } } return holder; }, /** * 添加试题 */ addQ : function(type) { if (holders == null) { holders = new Array(); } var index = holders.length; var holder = QM.questionnaire.createHolder(type); holders.add(holder); var $maindiv = $("#maiDiv"); var $div = $("
"); var $topic = QM.questionnaire._createDiv(holder); var $editdiv = QM.questionnaire._createEditDiv(holder); $div.append($topic); $div.append($editdiv); $div.hover(function() { $editdiv.show(); }, function() { $editdiv.hide(); }); $maindiv.append($div); var container = $('#main'); container .animate( { scrollTop : ($div.offset().top - container.offset().top + container .scrollTop()) }, 1000); $maindiv.append("
"); }, _createEditDiv : function(holder) { var $editdiv = $("
"); var index = holders.indexOf(holder); var $editA = $("编辑"); /** * 编辑按钮 */ $editA.click(function() { var index = $(this).attr("index"); var $maiDiv = $("#maiDiv") var $div = $maiDiv.children("div").eq(index); $(".stuff .Button_Edit").text("编辑"); $(".stuff span").show(); $div.addClass("selected"); var a = parseInt(index); var holder = holders[a]; var $newEdit = $("#" + holder.id + "_editDiv"); if ($newEdit.length > 0) { $newEdit.remove(); $div.removeClass("selected"); $(this).parent().find("span").show(); $(this).text("编辑"); } else { QM.questionnaire.editElement(holder); $(this).parent().find("span").hide(); $(this).text("取消"); } }); /** * 删除按钮 */ var $deleteA = $("删除"); $deleteA.click(function() { var index = $(this).attr("index"); var a = parseInt(index); holders.removeAt(a); QM.questionnaire.updateDiv(holders); }); /** * 上移按钮 */ var $upA = $("上移"); $upA.click(function() { var index = $(this).attr("index"); var a = parseInt(index); if (a != 0) { holders.move(a, -1); QM.questionnaire.updateDiv(holders); } }); /** * 下移按钮 */ var $downA = $("下移"); $downA.click(function() { var index = $(this).attr("index"); var a = parseInt(index); if (a != (holder.length - 1)) { holders.move(a, 1); QM.questionnaire.updateDiv(holders); } }); /** * 最前按钮 */ var $firstA = $("最前"); $firstA.click(function() { var index = $(this).attr("index"); var a = parseInt(index); holders.moveFirstIndex(a); QM.questionnaire.updateDiv(holders); }); /** * 最后按钮 */ var $lastA = $("最后"); $lastA.click(function() { var index = $(this).attr("index"); var a = parseInt(index); holders.moveLastIndex(a); QM.questionnaire.updateDiv(holders); }); $editdiv.append($editA); $editdiv.append($deleteA); $editdiv.append($upA); $editdiv.append($downA); $editdiv.append($firstA); $editdiv.append($lastA); return $editdiv; }, updateDiv : function(holders) { var $maindiv = $("#maiDiv"); $maindiv.html(""); $(holders).each(function(a) { var holder = holders[a]; var $div = $("
"); var $topic = QM.questionnaire._createDiv(holder); $div.append($topic); var $editdiv = QM.questionnaire._createEditDiv(holder); $div.append($editdiv); $div.hover(function() { $editdiv.show(); }, function() { $editdiv.hide(); }); $maindiv.append($div); $maindiv.append("
"); }); }, /** * 初始化试题 * * @param holder * @returns */ _createDiv : function(holder) { // 类型 var type = holder.type; var id = holder.id; var number = holders.indexOf(holder); var topic = holder.topic; var headCount=0 for(var a=0; a"); //标题 var $titleDiv = $("
"); $titleDiv.text(title); // 是否必填 if (holder.isWill) { $titleDiv.prepend($(redWill)); } // 是否有分值 if (type.indexOf("test") >= 0 && holder.code > 0) { var $code = $("(分数:" + holder.code + ")"); $code.css("color", "orange"); $titleDiv.append($code); } $div.append($titleDiv); switch (type) { case "radio": { var options = holder.options; var order = parseInt(holder.order); if (!order) { order = 1; } if (options != null) { var $radioTable = $("
"); for (var i = 0; i < options.length; i++) { if (i % order == 0) { $radioTable.append(""); } var $tr = $radioTable.find("tr:last"); var option = options[i]; var name = option.name; var $radioDiv = $(""); // 添加选项 var $radio = $(""); // 添加默认值 if (option.selected) { $radio.children().attr("checked", "checked"); } $radio.click(function() { holder.value = name; }); $radioDiv.append($radio); // 是否含有图片 if(holder.isPic && option.pic != ""){ var $pic = $('' +''); $radioDiv.append($pic); } $radioDiv.append(option.name); // 是否填空 if (option.isText) { var $text = $(""); $radioDiv.append($text); if (option.isWill) { $radioDiv .prepend(redWill) } } $tr.append($radioDiv); } $div.append($radioTable); } break; } case "check": { var options = holder.options; if (options != null) { var order = parseInt(holder.order); if (!order) { order = 1; } var $checkTable = $("
"); for (var i = 0; i < options.length; i++) { var option = options[i]; var name = option.name; if (i % order == 0) { $checkTable.append(""); } var $tr = $checkTable.find("tr:last"); var $checkDiv = $(""); // 添加选项 var $check = $(""); // 添加默认值 if (option.selected) { $check.children().attr("checked", "checked"); } $check.click(function() { holder.value = name; }); $checkDiv.append($check); // 是否含有图片 if(holder.isPic && option.pic != ""){ var $pic = $('' +''); $checkDiv.append($pic); } $checkDiv.append(option.name); // 是否填空 if (option.isText) { $checkDiv.append(""); if (option.isWill) { $checkDiv.append(redWill); } } $tr.append($checkDiv); } $div.append($checkTable); } break; } case "head" : { break; } case "input": { var $inputDiv = $("
"); var $input = $("