Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交按钮上的onclick事件_Javascript_Html - Fatal编程技术网

Javascript 提交按钮上的onclick事件

Javascript 提交按钮上的onclick事件,javascript,html,Javascript,Html,我试图在单击submit按钮并调用js函数后验证输入文本是否具有电子邮件格式。我遇到的第一个问题是,在一些测试之后,我发现它没有进入被调用的函数。在这之后,我认为一切都应该是好的,但为了避免在几分钟内发布两个几乎相等的问题,我将包括最重要的部分。 总而言之,它应该检查: -电子邮件字段不为空 -电子邮件字段有@(不考虑订单等) 然后,它应该告诉如果它发现了任何问题,如果不是保持一切不变 我希望我已经表明了我的观点,如果没有,我可以再解释一遍 <input type="text" name

我试图在单击submit按钮并调用js函数后验证输入文本是否具有电子邮件格式。我遇到的第一个问题是,在一些测试之后,我发现它没有进入被调用的函数。在这之后,我认为一切都应该是好的,但为了避免在几分钟内发布两个几乎相等的问题,我将包括最重要的部分。 总而言之,它应该检查: -电子邮件字段不为空 -电子邮件字段有@(不考虑订单等)

然后,它应该告诉如果它发现了任何问题,如果不是保持一切不变

我希望我已经表明了我的观点,如果没有,我可以再解释一遍

 <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还是false
  • 我已经创建并测试了一个JSFIDLE,它遵循了大多数建议。它还展示了一种使代码更加简洁并实现类似目标的方法。很抱歉,如果这太过说教/无所不知,我肯定不知道。这个问题激起了我的兴趣,我不得不回答

    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; 
    }
    

    这是你的整个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; 
    }