javascript验证失败后单击保留表单值
这是作业的一部分。本该工作的一切都已经工作了,但有些事情困扰着我。到目前为止,代码的唯一目的是测试我们从数据进行验证的能力。无论如何,现在validate()函数已附加到提交按钮:javascript验证失败后单击保留表单值,javascript,html,onclick,validation,Javascript,Html,Onclick,Validation,这是作业的一部分。本该工作的一切都已经工作了,但有些事情困扰着我。到目前为止,代码的唯一目的是测试我们从数据进行验证的能力。无论如何,现在validate()函数已附加到提交按钮: <input type="submit" value="Find Love" onclick="validate()"> 当任何验证失败时,所有文本框、下拉列表等都会被清除,但我希望它们保留它们的值,只关注第一个不正确的值(此时保留它们的值对我来说更重要)。实际情况是,这需要对onclick函数进行
<input type="submit" value="Find Love" onclick="validate()">
当任何验证失败时,所有文本框、下拉列表等都会被清除,但我希望它们保留它们的值,只关注第一个不正确的值(此时保留它们的值对我来说更重要)。实际情况是,这需要对onclick函数进行一些修改还是同时使用不同的函数?请帮忙。如果您需要查看javascript,我也可以发布
function validate()
{
var blnValid = true;
if(isBlank("txtFName"))
{
blnValid = false;
alert("First name cannot be blank!")
document.getElementById("txtFName").focus();
}
if(blnValid)
{
if(isBlank("txtLName"))
{
blnValid = false;
alert("Last name cannot be blank!")
document.getElementById("txtLName").focus();
}
}
if(blnValid)
{
if(isBlank("txtAge"))
{
blnValid = false;
alert("Age cannot be blank!")
document.getElementById("txtAge").focus();
}
}
if(blnValid)
{
var strInput = document.getElementById("txtAge").value;
if(!isInt(strInput))
{
blnValid = false;
alert("You must enter a valid number in the age field.")
document.getElementById("txtAge").select();
}
}
if(blnValid)
{
if(document.getElementById("selUserGender").selectedIndex <= 0)
{
alert("Please select your gender");
blnValid = false;
}
}
if(blnValid)
{
if(document.getElementById("selFindGender").selectedIndex <= 0)
{
alert("Please select your gender");
blnValid = false;
}
}
if(blnValid)
{
blnChecked = false;
arRadio = document.forms[0].rdbAgeRange;
for (var i = 0; i < arRadio.length; i++)
{
if(arRadio[i].checked)
{
blnChecked = true;
break;
}
}
if (!blnChecked)
{
alert("You must select an age group.");
blnValid = false;
}
}
if(blnValid)
{
if(!document.getElementById("chkSkeeball").checked
&& !document.getElementById("chkAir").checked
&& !document.getElementById("chkCliff").checked
&& !document.getElementById("chkHamster").checked)
{
blnValid = false;
alert("You must select a hobby.")
}
}
return blnValid;
}
function isInt(strValue)
{
var validNums = "0123456789";
var blnIsNumber = true;
var tempChar;
for (var i = 0; i < validNums.length; i++)
{
tempChar = strValue.substr(i, 1);
if (validNums.indexOf(tempChar) == -1)
{
return false;
}
}
return true;
}
function isBlank(elementID)
{
if(document.getElementById(elementID).value.length == 0)
{
return true;
}
return false;
}
函数验证()
{
var blnValid=true;
如果(isBlank(“txtFName”))
{
blnValid=false;
警报(“名字不能为空!”)
document.getElementById(“txtFName”).focus();
}
如果(blnValid)
{
如果(isBlank(“txtLName”))
{
blnValid=false;
警报(“姓氏不能为空!”)
document.getElementById(“txtLName”).focus();
}
}
如果(blnValid)
{
如果(为空(“txtAge”))
{
blnValid=false;
警报(“年龄不能为空!”)
document.getElementById(“txtAge”).focus();
}
}
如果(blnValid)
{
var strInput=document.getElementById(“txtAge”).value;
如果(!isInt(strInput))
{
blnValid=false;
警报(“您必须在年龄字段中输入有效数字。”)
document.getElementById(“txtAge”).select();
}
}
如果(blnValid)
{
如果(document.getElementById(“selUserGender”).selectedIndex缺少分号:
if(isBlank("txtFName"))
{
blnValid = false;
alert("First name cannot be blank!") //here
document.getElementById("txtFName").focus();
}
if(blnValid)
{
if(isBlank("txtLName"))
{
blnValid = false;
alert("Last name cannot be blank!") //and here
document.getElementById("txtLName").focus();
}
}
if(blnValid)
{
if(isBlank("txtAge"))
{
blnValid = false;
alert("Age cannot be blank!") //and here
document.getElementById("txtAge").focus();
}
}
您的问题实际上是您的HTML。Javascript中的任何内容都不会清除元素,但由于您使用的是onClick,因此表单实际上正在提交。我假设它可能只是提交回页面并清除所有内容。而不是在form元素中使用onSubmit来代替onClick:
<form method="post" action="url_of_action" onSubmit="return validate()">
如果无效,它将阻止表单提交。请这样做。可能有一行用于清除输入。抱歉,这是我第一次发布到此网站。我似乎无法使用评论框…我已将标记更改为您建议的内容,但同样的情况发生了。您是否收到了警报框?您知道,我刚刚再试了一次(我从昨天起就没看过了),它很有效。谢谢!现在我只需要研究一下动作值。我不能投票支持你的答案,我的代表不够高,或者其他什么。还有,有没有一种简单的方法可以在这些评论框中嵌入代码?动作值应该指向处理表单的URL。(通常是用服务器端语言(如PHP)编写的文件)。如果课程的对象是Javascript,则可以将其留空。