通过某种形式的验证来防止Ajax调用

时间:2018-09-06 19:02:52

标签: javascript jquery html ajax

我有一个带有ajax调用的可正常工作的JavaScript函数,并且post调用在提交按钮后可以很好地工作。

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

我在这里要做的就是确保数字字段仅是数字,并且所有必填字段都不为空,但是如果我使用空输入进行测试,或者将“ ONE”放在期望的字段之一中数字(而不是“ 1”),它仍然调用ajax,后者会插入记录,然后刷新页面。我应该使用每个输入字段的ID而不是已经为输入“名称”设置的变量来执行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
    }
}

1 个答案:

答案 0 :(得分:0)

分号在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 */