基本的javascript表单验证 - 验证具有相同功能的相同输入类型

时间:2018-01-31 23:47:54

标签: javascript jquery forms function validation

我一直对表单使用jQuery validate(),但在升级到我们的XMPie软件(我们进行有针对性的通信)后最近遇到了问题。

新版本的XMPie需要jQuery 1.10.2,这是validate()不支持的版本,所以我手动进行验证。

我可以通过为每个输入编写单独的函数来轻松验证,但这意味着重写至少一些代码以定位特定的输入名称或id。例如。

我想知道为什么我不能为特定输入类型(例如简单的文本字段)编写泛型函数,并让输入在focusout()上调用函数,将其自身传递为参数?

如果我有两个文字输入," fullName"和" userName"为什么我不能使用

$(document).ready(function () {
    var inputName = "";
    var inputValue = "";
    var inputAlert = "";
    $("input").focusout(function () {
        inputIdentify(this);
        console.log(inputName);
        inputGetValue(this);
        console.log(inputValue);
        if (this.type == "text") {
            console.log("YES");
            textValidate(inputName, inputValue);
        }
    });

    function inputIdentify(theInput) {
        inputName = theInput["name"];
        console.log(inputName);
        return inputName;
    }

    function inputGetValue(theInput) {
        inputValue = theInput["value"];
        return inputValue;
    }

    function textValidate(theInput, inputValue) {
        console.log(theInput,inputValue);
        var letters = /^[A-Za-z ]+$/;
        if (inputValue.match(letters)) {
            $(theInput).addClass("correct");
            return true;
        } else {
            $(theInput).removeClass("correct");
            $(theInput).addClass("incorrect");

            // alert('Username must have alphabet characters only');
            $(inputName).focus();
            return false;
        }
    }
});

删除并添加简单的CSS类(彩色边框)以指示问题字段?

谢谢和问候,

马尔科姆

1 个答案:

答案 0 :(得分:1)

您没有将正确的参数传递给textValidate()。您将inputName作为theInput传递,但textValidate()使用$(theInput)来访问输入元素。您应该将this作为该参数传递:

textValidate(this, inputValue);

另外,您使用全局变量的设计很差。由于inputIdentify()inputGetValue()返回值,您应该将返回的值赋给局部变量,而不是让这些函数设置全局变量。

   $("input").focusout(function () {
        var inputName = inputIdentify(this);
        console.log(inputName);
        var inputValue = inputGetValue(this);
        console.log(inputValue);
        if (this.type == "text") {
            console.log("YES");
            textValidate(this, inputValue);
        }
    });

    function inputIdentify(theInput) {
        var inputName = theInput["name"];
        console.log(inputName);
        return inputName;
    }

    function inputGetValue(theInput) {
        var inputValue = theInput["value"];
        return inputValue;
    }