Javascript 提交按钮上的onclick事件
我试图在单击submit按钮并调用js函数后验证输入文本是否具有电子邮件格式。我遇到的第一个问题是,在一些测试之后,我发现它没有进入被调用的函数。在这之后,我认为一切都应该是好的,但为了避免在几分钟内发布两个几乎相等的问题,我将包括最重要的部分。 总而言之,它应该检查: -电子邮件字段不为空 -电子邮件字段有@(不考虑订单等) 然后,它应该告诉如果它发现了任何问题,如果不是保持一切不变 我希望我已经表明了我的观点,如果没有,我可以再解释一遍Javascript 提交按钮上的onclick事件,javascript,html,Javascript,Html,我试图在单击submit按钮并调用js函数后验证输入文本是否具有电子邮件格式。我遇到的第一个问题是,在一些测试之后,我发现它没有进入被调用的函数。在这之后,我认为一切都应该是好的,但为了避免在几分钟内发布两个几乎相等的问题,我将包括最重要的部分。 总而言之,它应该检查: -电子邮件字段不为空 -电子邮件字段有@(不考虑订单等) 然后,它应该告诉如果它发现了任何问题,如果不是保持一切不变 我希望我已经表明了我的观点,如果没有,我可以再解释一遍 <input type="text" name
<input type="text" name="email" id="email">
<input type="submit" onclick=" proceed()"/>
<script>
proceed(){
var email= document.getElementById('email').value;
var problems;
if (email == ""){
problems = "Empty variable \n";
}
var noat = true;
for (int i=0; email.length; i++){
if (email.charAt(i) == "@"){ //Compare each character
noat=false;
break;
}
}
if (email=="" || noat=true){
problems += "No @ \n"
alert(problems);
}
}
</script>
继续{
var email=document.getElementById('email')。值;
var问题;
如果(电子邮件==“”){
problems=“空变量\n”;
}
var noat=真;
for(int i=0;email.length;i++){
如果(email.charAt(i)=“@”){//比较每个字符
noat=假;
打破
}
}
如果(email==“”| | noat=true){
问题+=“否@\n”
警惕(问题);
}
}
函数继续(){
var email=document.getElementById('email')。值;
var问题=”;
如果(电子邮件==“”){
problems=“空变量\n”;
}
var noat=假;
如果(email.indexOf(“@”)=-1)noat=true;
//对于(int i=0;i
我认为您应该使用onsubmit,而不是使用onclick,您应该使用电子邮件测试正则表达式,而不是比较@symbol的每个字符
网上有很多这样的网站,只有谷歌
我正要自己写这篇文章,但我碰巧在4小时前找到了。这会对你有所帮助
<script>
function proceed()
{
var email = document.getElementById("email").value;
var atpos = email.indexOf("@");
var dotpos = email.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos+2 || dotpos+2 >= email.length)
{
alert("Not a valid e-mail address");
return false;
}
};
</script>
<form onsubmit="proceed();">
<input type="text" name="email" id="email" />
<input type="submit" />
</form>
函数继续()
{
var email=document.getElementById(“email”).value;
var atpos=email.indexOf(“@”);
var dotpos=email.lastIndexOf(“.”);
如果(atpos<1 | | dotpos=email.length)
{
警报(“不是有效的电子邮件地址”);
返回false;
}
};
你的代码有很多拼写错误,请慢慢写。这是来自这个问题已经被标记为已回答,但我觉得问题中有一些关键要点/学习点,因此我在下面添加了我的输入,fwiw
procedure(){…}
开头。您应该将其更改为function procedure(){…}
,以使其成为正确的函数声明email
和problems
vars彼此相邻声明,这是很好的。然而,varnoat
本身只需要向下几行。将其向上移动到其他声明可以帮助读者了解您r代码了解此函数中要使用的变量电子邮件
是否为空字符串。如果为空,则设置problems
变量。但如果为空,我们可以停在原地。只需返回问题;
即可完成函数email.indexOf(“@”)
使用本机JS方法来完成您在字符串迭代器中所做的工作for(int i=0;…)
我觉得int i=0
看起来很有趣,所以我尝试在浏览器的javascript控制台中键入它。我遇到了一个错误。您可以将其更改为for(var i=0;…)
,以获得正确的语法if(email==”)
。但我们已经问过这个问题,如果为真,我们会退出函数。如果字符串为空,则字符串中不能有@
符号noat=true
。由于赋值的结果是真实的,所以它实际上总是会计算为true。您将noat
的值设置为true,javascript就像“酷炫的东西对我来说很好”。它不会检查noat
最初是设置为true还是falsewindow.proceed = function () {
var email = document.getElementById('email').value;
if (email == "") {
alert("Empty variable \n");
} else if (email.indexOf("@") == -1) {
alert("No @ \n");
} else return true;
}
这是你的整个HTML吗?哪里是“代码> <代码>标签?不,这只是我有困难的部分。其他只是更多的填充问题。抱歉,我忘记了脚本标签,我刚刚添加了它。考虑使用正则表达式来验证电子邮件。但是我不知道为什么可变电子邮件不接受插入在i中的字符串。nput框,我试图打印它,但没有得到任何结果。更新的答案,再次尝试更新的答案,再试一次。但我认为在javascript中定义“”或保持变量未定义是一样的,不是吗?
window.proceed = function () {
var email = document.getElementById('email').value;
if (email == "") {
alert("Empty variable \n");
} else if (email.indexOf("@") == -1) {
alert("No @ \n");
} else return true;
}