2016-05-13 76 views
0

在JavaScript中,我应该创建一个函数来检查表单中的文本字段是否为空。如果是,用户点击提交,用户将不被允许继续。我在w3schools上找到了我认为合适的解决方案(http://www.w3schools.com/js/js_validation.asp)。我查过了比我记得更多的时间,一切似乎都是按顺序的,但它不工作!相反,当单击提交按钮时,该网站调用不同的功能,我在它是不应该做的JavaScript ...表单验证textfield无法正常工作?

HTML代码

Other code 
<p> 
    <form method="post" name="form" action="" onsubmit="return validateName()"> 
    <label for="fullName">Namn: </label><input id="fullName" class="text" name="namn" type="text"> </input> 
</p> 
<p> 
    <label for="epost">Epost: </label><input id="epost" class="text" name="epost" type="email"> </input> 
</p> 
<p> 
    <input id="submit" type="submit" value="Skicka"> </input> 
</p> 
</form> 
Other code 

Javascript代码

function validateName() { 
    var a = document.forms["form"]["namn"].value; 
    if (a == null || a == "") { 
     alert("Name required"); 
     return false; 
    } else { 
     return true; 
    } 
} 

点击提交按钮应该调用上面的这个函数(validateName),而是调用这个函数:

function alert() { 
    return confirm("Do you really wish to leave this website?"); 
} 

我已经多次查看了我的代码,找不到任何似乎不合适的东西。你们能找到任何错误吗?也许建议解决方案,解决我的问题,所以我的功能将正常工作?

如果有人能帮我解决这个问题,我将不胜感激!

+0

尝试注释掉该报警功能。你的控制台会出错,你可以找出它从哪里被调用。 – RayfenWindspear

+0

另请注意,通过调用“alert”函数,您可以覆盖默认警报函数。相反,您应该使用var alert = function(){}将您的函数定义封装在本地化范围内。 默认情况下,Javascript在全局范围内声明函数。 – RayfenWindspear

+0

我明白了!应该看到我意外地将我的功能命名为默认功能。谢谢! – Isus

回答

0

alertpredefined function您正在使用正确的一次错误的第二次。只需更改姓名您alert功能的别的东西,或只是使用confirm,因为它是intended并离开了function alert部分

正确:

alert("Name required"); 

错误:

function alert() { 
    return confirm("Do you really wish to leave this website?"); 
} 

解决办法之一就是做到这一点:

function confirm_leaving(){ 
    return confirm("Do you really wish to leave this website?"); 
} 
+0

我明白了!应该看到,尽管我盯着它很长一段时间,但我可能已经失明了。非常感谢你!您的解释很容易理解,尤其是代码示例和“您的”。简短而有效。 – Isus

+0

我改变了它,现在它的工作完美。 – Isus

0

这是因为您正在调用validateName函数中的alert函数。

function validateName() { 
    var a = document.forms["form"]["namn"].value; 
    if (a == null || a == "") { 
     alert("Name required"); //<- remove this 
     return false; 
    } else { 
     return true; 
    } 
} 
+0

那么,我想打电话给警报功能。只是不是我自己的,而是默认的。我现在看到的错误是我将我的函数命名为预定义的函数,因此错误。 – Isus

0

嗯,我想你可以把这个代码,而不是如此:功能validateName(){ 要纠正此只是把这个命令: 功能validateName(本){

+0

我的代码不起作用的原因是因为我将其中一个函数命名为预定义函数。当我调用'alert()'函数时,这就搞砸了。但我现在解决了它。 – Isus