使用Javascript的OCR Web验证
OCR Web Validation using Javascript
我是一名计算机教师,试图比我的学生领先一步,他们正在使用HTML和JavaScript进行评估,以验证web表单。到目前为止,我已经设法做了以下事情,但无法继续前进:
<head>
<title>Exam entry</title>
<script language="javascript" type="text/javascript">
function validateForm() {
var result = true;
var msg="";
if (document.ExamEntry.name.value=="") {
msg+='You must enter your name';
document.ExamEntry.name.focus();
document.getElementById("name").style.color="#FF0000";
result = false;
}
if (document.ExamEntry.subject.value=="") {
msg+=' You must enter the subject';
document.ExamEntry.subject.focus();
document.getElementById("subject").style.color="#FF0000";
result = false;
}
if (document.ExamEntry.examnumber.value=="") {
msg+=' You must enter the examination number';
document.ExamEntry.examnumber.focus();
document.getElementById("examnumber").style.color="#FF0000";
result = false;
}
if(document.getElementById("examnumber").value.length!=4)
{
msg+='You must have exactly 4 digits in the examination number textbox';
document.ExamEntry.examnumber.focus();
document.getElementById("examnumber").style.color="#FF0000"
result = false;
}
function checkRadio() {
var user_input = "";
var len = document.ExamEntry.entry.length;
var i;
for (i=0;i< len;i++) {
if (document.ExamEntry.entry[i].length.checked) {
user_input = document.ExamEntry.entry[i].value;
break;
}
}
if (msg==""){
return result;
}
else
{
alert(msg);
return result;
}
}
function resetForm()
{
document.getElementById('ExamEntry').reset();
document.getElementById("name").style.color="#000000";
document.getElementById("subject").style.color="#000000";
document.getElementById("examnumber").style.color="#000000";
}
</script>
</head>
<body>
<h1>Exam Entry Form</h1>
<form name='ExamEntry' method='post' action='success.html'>
<table width='50%' border='0'>
<tr>
<td id='name'>Name</td>
<td><input type='text' name='name' /></td>
</tr>
<tr>
<td id='subject'>Subject</td>
<td><input type='text' name='subject' /></td>
</tr>
<tr>
<td id='examnumber'>Examination Number</td>
<td><input type='text' name='examnumber'></td>
</tr>
<tr>
<td id='entry'>Level of Entry</td>
<td><input type='radio' name='entry' value='gcse'>GCSE<BR></td>
<td><input type='radio' name='entry' value='as'>AS<BR></td>
<td><input type='radio' name='entry' value='a2'>A2<BR></td>
</tr>
<tr>
<td><input type='submit' name='Submit' value='Submit' onclick='return (validateForm());'></td>
<td><input type='reset' name='Reset' value='Reset' onclick=' (resetForm());'></td>
</tr>
</table>
</form>
</body>
我想做的和我正在努力做的是两件不同的事情,现在已经到了我头撞砖墙的地步了。
我想做的是能够:
- 扩展Javascript代码,确保用户的考试号正好是4位数
- 向表单添加一组单选按钮,以接受GCSE、as或A2等级别的入学。编写一个函数,在警告框中向用户显示入口级别,以便可以确认或拒绝该级别。
我已经尝试纯JS很长时间了。不过我很乐意随时尝试一下。所以,有些人很幸运,而我有一些空闲时间。当涉及到编码时,我有一点点强迫症,我最终清理了很多代码,比如
- 总是把HTML属性用双引号括起来——虽然这不是硬性规则。
- 总是关闭输入属性-/> -虽然不是硬性规则。
- 在JS中定义元素并在需要的地方发布
- 总是试着把你的JS和HTML分开——这是一个很好的做法。
- 并遵循良好的老基础
因此,我们开始:
演示:小提琴HTML:
<h1>Exam Entry Form</h1>
<form name="ExamEntry" method="post" action="#">
<table width="50%" border="0">
<tr>
<td id="name">Name</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td id="subject">Subject</td>
<td><input type="text" name="subject" /></td>
</tr>
<tr>
<td id="examnumber">Examination Number</td>
<td><input type="text" name="examnumber" /></td>
</tr>
<tr>
<td id="entry">Level of Entry</td>
<td><input type="radio" name="entry" value="gcse" />GCSE<BR></td>
<td><input type="radio" name="entry" value="as" />AS<BR></td>
<td><input type="radio" name="entry" value="a2" />A2<BR></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Submit" /></td>
<td><input type="reset" name="Reset" value="Reset" onclick="resetForm();"></td>
</tr>
</table>
</form>
JS:
var form = document.forms['ExamEntry'];
var iName = form.elements['name'];
var iSubject = form.elements['subject'];
var iExamNumber = form.elements['examnumber'];
var iLevel = form.elements['entry'];
function validateForm() {
var result = true;
var msg = "";
if (iName.value=="") {
msg+='You must enter your name';
iName.focus();
iName.style.color="#FF0000";
result = false;
} else if (iSubject.value=="") {
msg+=' You must enter the subject';
iSubject.focus();
iSubject.style.color="#FF0000";
result = false;
} else if (iExamNumber.value=="" || !/^'d{4}$/.test(iExamNumber.value)) {
msg+=' You must enter a valid examination number';
iExamNumber.focus();
iExamNumber.style.color="#FF0000";
result = false;
} else if(!checkEntry()) {
msg+=' You must select a level';
result = false;
} else {
var cfm = confirm("You have selected " + checkEntry() + ". Are you sure to punish yourself?");
if (!cfm) {
result = false;
}
}
if (!result && msg != "") alert (msg);
return result;
}
function checkEntry() {
for (var i=0; i<iLevel.length; i++) {
if (iLevel[i].checked) {
return iLevel[i].value.toUpperCase();
}
}
return false;
}
function resetForm() {
form.reset();
iName.style.color="#000000";
iSubject.style.color="#000000";
iExamNumber.style.color="#000000";
}
form.onsubmit = validateForm;
form.onreset = resetForm;
首先在函数validateForm
中添加函数checkRadio
同样,这一行
if(document.getElementById("examnumber").value.length!=4)
实际上指向这段html
<td id='examnumber'>Examination Number</td>
td元素不能保存值…你需要把这行改成这样:
if (document.ExamEntry.examnumber.value.length!=4) {
相关文章:
- 同一文本框中的验证程序CPF e CNPJ(ASP.NET web应用程序)
- 如何使用Selenium Web驱动程序验证电子邮件
- asp.net web表单客户端验证始终回发
- 没有这样的元素:找不到元素:正在验证web元素是否丢失
- 使用rest客户端/javascript验证microsoftoutlook-web(owa)
- 使用普通javascript和验证的自定义web组件
- TextBox自定义Web控件和JavaScript客户端验证
- Web 文本字段中的字符集验证
- 无法连接到网络服务器.验证 Web 服务器是否正在运行,并且传入的 http 请求未被防火墙阻止
- 如何使用 Web 驱动程序验证从文本字段中提取自动填充值
- 在 Web 浏览器中禁用 Javascript 应禁用服务器验证控件
- 如何最好地处理Web应用程序中的数据验证:纯JavaScript代码或对熟悉的perl包的ajax调用
- 将 JS 文件添加到 web.config 中用于表单身份验证的例外文件列表中会导致无限重定向
- 如何在我的 Web 表单中选择标记设置验证
- 关于具有用户身份验证的 Web 应用程序的结构
- 如何验证请求是否来自特定 Web 应用
- 如何在Python开发Web服务器上使用实际的Google身份验证
- 使用ASP.NET framework 4.5 Web Forms进行引导验证
- Restify静态Web服务器在启用HTTP基本身份验证后停止工作
- 使用Javascript的OCR Web验证