Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 通过某种形式验证防止ajax调用_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 通过某种形式验证防止ajax调用

Javascript 通过某种形式验证防止ajax调用,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个带有ajax调用的javascript函数,post调用在提交按钮时可以完美地工作 我只是想添加一些验证,但即使输入无效,它仍然会提交ajax并刷新页面 我在这里所要做的就是确保数字字段只是数字,并且所有必需的字段都不是空的,但是如果我用空输入测试它,或者在需要数字的字段中输入“一”(而不是“1”),它仍然会调用ajax,ajax会插入记录,然后刷新页面。我是否应该使用每个输入字段的ID而不是已经为输入“name”设置的变量来执行if语句 $("#save").click(functio

我有一个带有ajax调用的javascript函数,post调用在提交按钮时可以完美地工作

我只是想添加一些验证,但即使输入无效,它仍然会提交ajax并刷新页面

我在这里所要做的就是确保数字字段只是数字,并且所有必需的字段都不是空的,但是如果我用空输入测试它,或者在需要数字的字段中输入“一”(而不是“1”),它仍然会调用ajax,ajax会插入记录,然后刷新页面。我是否应该使用每个输入字段的ID而不是已经为输入“name”设置的变量来执行if语句

$("#save").click(function(e){

    e.preventDefault();

    var name = $("input[name=name]").val();
    var IDNumber = $("input[name=IDNumber]").val();
    var IDName2 = $("input[name=IDName2]").val();
    var IDNumber2 = $("input[name=IDNumber2]").val();
    var Number3 = $("input[name=Number3]").val();
    var ExtraName = $("input[name=ExtraName]").val();
    var category = $("input[name=category]").val();

    if(isNaN(IDNumber) || isNaN(IDNumber2) || isNaN(Number3)){
        alert('Fields must be numeric');
    }else if(name == '' || 
            IDNumber == '' || 
            IDName2 == '' || 
            IDNumber2 == '' || 
            Number3 == '' || 
            ExtraName == '' || 
            category == '')
    {
        alert('You must fill out all required fields';)
    }else{

        //perform the working ajax
    }
}

分号位于缺少必填字段的alert方法内。再试一次,看看是否有效!如果它是一个提交事件,而不仅仅是一次点击,那就更好了。假设您的选择器用于按钮,则选择器应位于窗体上,而不是按钮上

$("#save").submit(function(e){ /* Should be a submit event */

    e.preventDefault();

    var name = $("input[name=name]").val();
    var IDNumber = $("input[name=IDNumber]").val();
    var IDName2 = $("input[name=IDName2]").val();
    var IDNumber2 = $("input[name=IDNumber2]").val();
    var Number3 = $("input[name=Number3]").val();
    var ExtraName = $("input[name=ExtraName]").val();
    var category = $("input[name=category]").val();

   if(isNaN(IDNumber) || isNaN(IDNumber2) || isNaN(Number3)) {
        alert('Fields must be numeric');
    } else if(name == ''|| IDNumber == '' || IDName2 == '' || IDNumber2 == '' || Number3 == '' || ExtraName == '' || category == '') {
        alert('You must fill out all required fields'); /* Put semicolon outside */
   } else {
        /* AJAX CODE HERE */
   }
}); /* another syntax error right here */

在输入字段中使用required和type=number属性是否可以在您正在编码的浏览器中使用?另外,代替.click,添加一个.submit到表单元素。只是为了澄清,警报显示但AJAX执行,或者不显示警报?您可以将所有值记录到console中,并查看出了什么问题吗?抱歉,澄清一下:警报当前不显示是的,您的if条件有问题,将所有值记录到console,并查看出了什么问题