This commit is contained in:
xice09
2018-05-30 15:31:33 +08:00
commit 4815ee7832
34 changed files with 18348 additions and 0 deletions

253
js/questionnaire.js Normal file
View File

@@ -0,0 +1,253 @@
//共占用3个变量名myFun,addOne,checkedInfo
var checkInfo, addOne;
//////////////////////////////////////////////////////////////////////////////////////////
(function(window) {
//倒计时
function remtime(timesec, clearT, fun) {
function countdown() {
function formatTime(sec) {
function fix(n) {
if (n < 10) return "0" + n.toString();
else return n;
// return n<10?'0'+n.toString():n;
}
return fix(Math.floor(sec / 60)) + ":" + fix(sec % 60);
}
timesec--;
var timeTmp=formatTime(timesec);
for (var e_array = document.getElementsByName('remtime'), i = e_array.length - 1; i >= 0; i--) {
e_array[i].innerText = timeTmp;
}
if (!timesec) {
clearTimeout(timer);
$.isFunction(fun) && fun();
}
if (!clearT[0]) {
clearTimeout(timer);
}
}
var timer = setInterval(countdown, 1000);
}
//边框效果--移入
function borderShow(obj) {
var hh = $(obj).height() + 50,
ww = $(obj).width() + 50;
$(obj).find('.biankuang_1').stop(true).animate({
height: hh
}, 300);
$(obj).find('.biankuang_2').stop(true).delay(300).animate({
width: ww
}, 300);
$(obj).find('.biankuang_3').stop(true).animate({
height: hh
}, 300);
$(obj).find('.biankuang_4').stop(true).delay(300).animate({
width: ww
}, 300);
}
//边框效果--移出
function borderHidden(obj) {
$(obj).find('.biankuang_1').stop(true).delay(100).animate({
height: '0px'
}, 100);
$(obj).find('.biankuang_2').stop(true).animate({
width: '0px'
}, 100);
$(obj).find('.biankuang_3').stop(true).delay(100).animate({
height: '0px'
}, 100);
$(obj).find('.biankuang_4').stop(true).animate({
width: '0px'
}, 100);
}
window.myFun = [remtime, borderShow, borderHidden];
})(window);
//////////////////////////////////////////////////////////////////////////////////////////
$(document).ready(function() {
var clearT = [1],
//正则匹配规则
theRegex = [
/^[\u4e00-\u9fa5]{2,5}$/,
/^((200|199)\d|201[0-7])\d{6}$/,
/^[\u4e00-\u9fa5]{2,}$/,
/^[\u4e00-\u9fa5]{2,}$/,
/^1\d{10}$/
],
eName = [
"user_name",
"student_id",
"school",
"userclass",
"telephone"
],
lableValue = new Array(),
questionNum,
questionsChecked = new Array();
//初始化 questionNum
questionNum = document.getElementById("ppp").getAttribute('ppp');
//初始化数组 labelValue & questionChecked
for (var i = eName.length - 1; i >= 0; i--) {
lableValue[i] = $("#" + eName[i] + "_label").html();
}
for (var i = questionNum - 1; i >= 0; i--) {
questionsChecked[i] = 0;
}
//倒计时器
//name="remtime"
//remtime(sec,callback);
startremtime=function(){
myFun[0](600, clearT,
function() {
var btn = document.getElementById("submit");
$("#form1").ajaxSubmit({
beforeSubmit: function() {
if (!clearT[0]) {
return false;
}
},
success: function(responseText) {
clearT[0] = 0;
alert("时间到!");
alert(responseText);
}
});
btn.setAttribute('class', btn.getAttribute('class') + ' disabled');
});
}
//当鼠标离开节点时调用此方法,验证节点内容是否符合注册规范
checkInfo = function(node, num) {
var label_id = "#" + eName[num] + "_label";
console.log(node.value);
if (!theRegex[num].test(node.value) && !node.value.length == 0) { //验证是否符合节点对应的正则表达式
$(node).css("box-shadow", "0 1px 0 0 red");
$(node).css("border-bottom", "1px solid red"); //不符合,相应内容变成红色
$(label_id).html("请填写正确的" + lableValue[num] + "");
$(label_id).css("color", "red");
} else {
$(node).css("box-shadow", "0 1px 0 0 #26a69a");
$(node).css("border-bottom", "1px solid #26a69a"); //符合,相应内容变成绿色
$(label_id).html(lableValue[num]);
$(label_id).css("color", "#9e9e9e");
}
};
addOne = function(node) {
var sum = 0;
for (var i = questionNum; i > 0; i--) {
if ($(node).attr('name') == "answer_" + i) {
questionsChecked[i - 1] = 1;
break;
}
}
for (var i = questionNum - 1; i >= 0; i--) {
sum += questionsChecked[i];
}
$(".determinate").css("width", 100 * sum / questionNum + "%");
};
//表单验证
requestFirst = function() {
var ifblock = new Array(),
scroll_top_duration = 600; //ms
for (var i = eName.length - 1; i >= 0; i--) {
ifblock[i] = $.trim(document.getElementById(eName[i]).value);
}
//判断姓名和学好是否填写
for (var i = 0; i <= ifblock.length - 1; i++) {
if (ifblock[i].length == 0) {
Materialize.toast(lableValue[i] + '不能为空!', 4000);
$('body,html').animate({
scrollTop: 0
}, 400);
return false;
} else if (!theRegex[i].test(ifblock[i])) {
Materialize.toast(lableValue[i] + '不正确!', 4000);
$('body,html').animate({
scrollTop: 0
}, 400);
return false;
}
}
$("#information").hide();
$("#hiddenDisplay").hide();
$("#hiddenBefore").show();
$("#submit").show();
$("#theFooter").show();
startremtime();
return true;
}
function showRequest() {
var ifblock = new Array(),
scroll_top_duration = 600; //ms
for (var i = eName.length - 1; i >= 0; i--) {
ifblock[i] = $.trim(document.getElementById(eName[i]).value);
}
//判断姓名和学好是否填写
for (var i = 0; i <= ifblock.length - 1; i++) {
if (ifblock[i].length == 0) {
Materialize.toast(lableValue[i] + '不能为空!', 4000);
$('body,html').animate({
scrollTop: 0
}, 400);
return false;
} else if (!theRegex[i].test(ifblock[i])) {
Materialize.toast(lableValue[i] + '不正确!', 4000);
$('body,html').animate({
scrollTop: 0
}, 400);
return false;
}
}
//判断题目是非选择
for (var i = 1; i <= questionNum; i++) {
var answerno = "answer_" + i, //遍历每到题目
isAutoSend = document.getElementsByName(answerno),
nochecked = 0;
for (var x = 0; x < isAutoSend.length; x++) {
if (isAutoSend[x].checked) {
nochecked = 1;
break;
}
}
if (nochecked == 0) {
var question = "question_" + i,
obj = document.getElementsByName("div_e")[i - 1];
Materialize.toast("第" + i + "题未选择", 3000);
$('body,html').animate({
scrollTop: $(document.getElementById(question)).offset().top - 75
}, scroll_top_duration,
function() {
myFun[1](obj);
setTimeout(function() { myFun[2](obj) }, 1200);
}
);
return false;
}
}
//alert("提交成功。谢谢参与我们的活动请继续关注我们公众号bupt_stu的后续推送。现在你可以直接关闭页面了。"); //Alert("post success.");
if (!clearT[0]) {
return false;
}
return true;
}
function showResponse(responseText) {
clearT[0] = 0;
alert(responseText);
window.location.href="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5NzY1MjYyMg==&scene=124#wechat_redirect";
}
var options = {
beforeSubmit: showRequest,
success: showResponse
};
$("#form1").ajaxForm(options);
});