Javascript 调用所有函数以提交表单
我是JavaScript新手,正在研究如何在单击按钮时验证我的表单,但是我的脚本一直跳到第一个函数validate Name,并且一直高亮显示,我不知道在clear all函数中放什么,所以它跳到下一个未验证的项Javascript 调用所有函数以提交表单,javascript,Javascript,我是JavaScript新手,正在研究如何在单击按钮时验证我的表单,但是我的脚本一直跳到第一个函数validate Name,并且一直高亮显示,我不知道在clear all函数中放什么,所以它跳到下一个未验证的项 function validate_form(form) { var complete=false; if(complete) { clear_all(); complete = checkUsernameForLength(f
function validate_form(form)
{
var complete=false;
if(complete)
{
clear_all();
complete = checkUsernameForLength(form.username.value);
}
if(complete)
{
clear_all();
complete = checkaddress(form.address.value);
}
if(complete)
{
clear_all();
complete = checkaddress(form.address.value);
}
if (complete)
{
clear_all();
complete = checkphone(form.phone.value);
}
if (complete)
{
clear_all();
complete = checkEmail(email.phone.value);
}
}
function clear_all()
{
document.getElementById('usernamehint').style.visibility= 'hidden';
document.basicform.username.style.backgroundColor='white';
document.getElementById("countryhint").style.visibility= 'hidden';
document.basicform.country.style.backgroundColor='white';
document.getElementById("").style.visibility= 'hidden';
document.basicformm.address.style.backgroundColor='white';
document.getElementById("").style.visibility= 'hidden';
document.basicform.phone.style.backgroundColor='white';
document.getElementById("").style.visibility= 'hidden';
document.basicform.email.style.backgroundColor='white';
}
function checkUsernameForLength(whatYouTyped)
{
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (txt.length > 2) {
fieldset.className = "welldone";
return true;
} else {
fieldset.className = "";
return false;
}
}
function checkEmail(whatYouTyped)
{
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(txt)) {
fieldset.className = "welldone";
} else {
fieldset.className = "";
}
}
function checkaddress(whatYouTyped)
{
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (txt.length > 3 && txt.length <10) {
fieldset.className = "welldone";
}
else {
fieldset.className = "";
}
}
function checkphone(whatYouTyped)
{
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if ( /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/.test(txt)) {
fieldset.className = "welldone";
}
else
{
fieldset.className = "";
}
}
function addLoadEvent(func)
{
var oldonload = window.onload;
if (typeof window.onload != 'function')
{
window.onload = func;
}
else
{
window.onload = function()
{
oldonload();
func();
}
}
}
function prepareInputsForHints()
{
var inputs = document.getElementsByTagName("input");
for (var i=0; i<inputs.length; i++)
{
inputs[i].onfocus = function ()
{
this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
}
inputs[i].onblur = function ()
{
this.parentNode.getElementsByTagName("span")[0].style.display = "none";
}
}
}
函数验证表单(表单)
{
var complete=false;
如果(完成)
{
全部清除();
complete=checkUsernameForLength(form.username.value);
}
如果(完成)
{
全部清除();
完成=检查地址(form.address.value);
}
如果(完成)
{
全部清除();
完成=检查地址(form.address.value);
}
如果(完成)
{
全部清除();
完成=检查电话(form.phone.value);
}
如果(完成)
{
全部清除();
完成=检查电子邮件(email.phone.value);
}
}
函数clear_all()
{
document.getElementById('usernamehint').style.visibility='hidden';
document.basicform.username.style.backgroundColor='white';
document.getElementById(“countryhint”).style.visibility='hidden';
document.basicform.country.style.backgroundColor='white';
document.getElementById(“”.style.visibility='hidden';
document.basicformm.address.style.backgroundColor='white';
document.getElementById(“”.style.visibility='hidden';
document.basicform.phone.style.backgroundColor='white';
document.getElementById(“”.style.visibility='hidden';
document.basicform.email.style.backgroundColor='white';
}
函数checkUsernameForLength(whatYouTyped)
{
var fieldset=whatYouTyped.parentNode;
var txt=whatYouTyped.value;
如果(txt.length>2){
fieldset.className=“很好”;
返回true;
}否则{
fieldset.className=“”;
返回false;
}
}
功能检查电子邮件(whatYouTyped)
{
var fieldset=whatYouTyped.parentNode;
var txt=whatYouTyped.value;
如果(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+*(\.\w{2,3})+$/.test(txt)){
fieldset.className=“很好”;
}否则{
fieldset.className=“”;
}
}
函数检查地址(whatYouTyped)
{
var fieldset=whatYouTyped.parentNode;
var txt=whatYouTyped.value;
如果(txt.length>3&&txt.length
series调用每个验证函数,并在通过某个错误时停止执行。
如果是或不是错误,则调用errors或success函数
另外,这是学习javascript的正确方法。如果你想很好地了解javascript,就不应该使用任何类似jQuery的糖类。我可以推荐以下方法吗:
您有一个验证程序函数列表
{ // map of ids : validators
name: function(formElement) {..., return 'Cannot be all lowercase' or return 'Other error'},
email: function(formElement) {...},
...
}
每个验证器函数都返回一条错误消息,如果没有问题,则返回nothing(未定义)
然后使用$.each over id:validator对,您可以执行以下操作(代码可能有缺陷):
这种方法的优点是它可以让用户一次看到所有错误,而不是一次一个错误
或者,每次用户点击submit,您都会执行类似于$.map或$.each的操作来运行所有验证程序函数,并适当地进行投诉
还要注意的是,您不能依靠客户端代码来验证表单,因为用户或黑客禁用或忽略您的验证代码并向您的服务器发送他们想要的任何值都是微不足道的。但是,客户端验证代码对于平滑和响应快的用户体验非常有用。我查看了您的代码并得到了t您的代码的主要问题是:
以下是验证的一部分:
complete = checkUsernameForLength(form.username.value);
}
if(complete)
……
function checkUsernameForLength(whatYouTyped) {
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (txt.length > 2) {
fieldset.className = "welldone";
}
else {
fieldset.className = "fail";
}
}
问题是checkUsernameForLength没有返回值,因此complete没有值。
您应该将功能代码更改为:
function checkUsernameForLength(whatYouTyped) {
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (txt.length > 2) {
fieldset.className = "welldone";
return true;
} else {
fieldset.className = "fail";
return false;
}
}
在这种情况下
complete = checkUsernameForLength(form.username.value);
如果没有错误或某些错误,则将具有true或false值。并且它将停止验证的执行强烈建议使用JQuery验证:document.getElementById(“”)
为什么为空字符串?这是什么意思?无法读取/写入返回null
未捕获类型错误:无法读取null的属性“style”
-这就是浏览器在执行清除所有();
文档时停止的原因因为我不确定要隐藏的元素的id中应该包含什么,我是在2个月前才开始学习的,所以我的学习速度非常慢,如果我只是复制上面的内容来包含我的所有功能,我在最后2天被困在这里:(对不起,我没有仔细检查你的代码。我写了另一个问题定义的答案。上面的代码你可以在提高js技能后使用:)+1不推荐jQuery,-1使用for…in
循环来迭代数组;。很抱歉,这对我来说有点高级。我是一名软件开发专业的一年级学生,正在额外学习JavaScript,但我很努力,我的验证工作正常,但我无法通过表单进行验证感谢一百万,我是否必须更改所有其他函数如上所述,我仍然存在clear_all()的问题;我应该调用什么ID?我的所有字段集都是相同的名称:此字段不能留空!
和document.getElementById('usernamehint')).style.visibility='hidden';
我更改了这些内容,但没有乐趣我将编辑上述问题谢谢所有帮助:)
function checkUsernameForLength(whatYouTyped) {
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (txt.length > 2) {
fieldset.className = "welldone";
return true;
} else {
fieldset.className = "fail";
return false;
}
}
complete = checkUsernameForLength(form.username.value);