TextBox下添加的onblur无法执行

这次的考试系统出现了一个严重的问题:149个考生,共答了447道简答题,其中125道没有写入到数据库中,这125道题全部集中在6道试题上。

首先想到的是这6道题的数据类型有误,没有写入数据库中,但是进入题库发现,所以的简答题,包括题干、答案都是text类型,排除这个原因,然后开始源代码调试。

考试界面


生成的DOM

<span id="jianda439">3.</span>
<table>
<tr>
	<td></td>
</tr>
</table>
<span>比较两栖类、爬行类、哺乳类肺脏的结构及呼吸方式。</span>
<table>
	<tr>
		<td></td>
	</tr>
</table>
<textarea name="TE_dongwuer_jiandati_Record439" rows="2" cols="20" id="TE_dongwuer_jiandati_Record439" οnblur="javascript:AnswerFillInBlankQuestion('TE_dongwuer_jiandati_Record','11070141019','1306212004','439','有尾两栖类肺的结构简单,为一对薄壁的囊状物,内壁光滑或仅基部有隔膜,能进行气体交换的面积非常有限,甚至有些有尾两栖类成体缺乏肺,完全靠皮肤呼吸和口咽腔呼吸;无尾两栖类的肺内壁呈蜂窝状,增大气体交换的面积,但肺的表面面积还很有限,皮肤呼吸仍重要,蛙在冬眠时甚至肺呼吸停止;爬行动物除水生的龟鳖类以咽及副膀胱辅助呼吸外,陆生种类肺成为唯一的呼吸器官,肺结构较两栖类进一步复杂,虽然仍呈囊状,但内壁有复杂的间隔分隔成许多蜂窝状小室,与空气的接触面积扩大;哺乳动物肺的结构最复杂,是一个复杂的支气管树,支气管入肺后。一再分支,最后形成盲囊,称为肺泡,肺泡是哺乳动物肺脏结构单位,如人约有7亿个肺泡,总面积可达60~120m2,气体交换就在肺泡内进行。
呼吸方式:两栖类为咽式呼吸;爬行类除了咽式呼吸外,发展了胸式呼吸;哺乳动物由于膈肌的出现,可以进行胸式呼吸和腹式呼吸,但在正常生理状况下进行胸腹式呼吸。','','10')" style="height:200px;width:400px;">
</textarea>

javascript

//更新简答题、名词解释题答题记录
function AnswerFillInBlankQuestion(tableName, studentId, examId, questionId, ReferAnswer, examAnswer, fraction) {
	//得到文本框中的值
	var id = tableName + questionId;
	examAnswer = document.getElementById(id).value;
	//获取时间戳
	var timestamp = (new Date()).valueOf();
	$.ajax({
		url: "ExamAnswerDeal.ashx",
		data: { "tableName": tableName, "studentId": studentId, "examId": examId, "questionId": questionId, "ReferAnswer": ReferAnswer, "examAnswer": examAnswer, "fraction": fraction, "Event": "Update", "timestamp": timestamp },
		type: "POST",
		dataType: "text",
		success: function (data, textStatus) {
		// alert(id);
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {
			//alert("答题失败,请联系管理员!");
			SaveAnswerToCookie(studentId, examId, tableName, questionId, examAnswer, "Update", fraction, "", "", "");
		}
	});

}

动态添加代码

                //附加失去焦点的时候更新答案事件
                textBox.Attributes.Add("onblur", "javascript:AnswerFillInBlankQuestion('" + recordShortTestTableName + "','" + StudentId + "','" + ExamId + "','" + dr["QuestionId"].ToString() + "','" + dr["CorrectAnswer"].ToString() + "','" + textBox.Text + "','" + Convert.ToDouble(dr["Fraction"].ToString()) + "')");
                isExaming.Controls.Add(textBox);
                AddOneRow();

在调试过程中发现一个很奇妙的问题:考试系统答案提交用的是Ajax,当文本框失去焦点是提交到数据库,但是这6道题答完后焦点离开,根本没有进入到onblur函数中。

在解决一下午没解决的,我决定发论坛的情况下,问题解决了。如果你仔细看了上面的javascript,你会发现onblur的题干参数中间“气体交换就在肺泡内进行。
呼吸方式:”中间有一个换行符么?对,这就是问题的答案。

这就完了?当然没完,从这个问题中发现,老师们给的题库出现特殊字符或格式问题比较常见,与其一次次给老师们说题库的注意事项,不如在考试系统后台管理中,添加一个题库检测功能,用于检测和决定是否保留特殊字符,并给出相应的建议。

需求,就是在问题中发现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值