将javascript函数转换为传入对象

将javascript函数转换为传入对象,javascript,jquery,Javascript,Jquery,我有一个javascript,它工作得很好- var employeename = $("#employeename"); var employeenameInfo = $("#employeenameInfo"); employeename.blur(validateEmployeename); function validateEmployeename(){ //if it's NOT valid if(employeename.val().length < 4){

我有一个javascript,它工作得很好-

var employeename = $("#employeename");
var employeenameInfo = $("#employeenameInfo");
employeename.blur(validateEmployeename);

function validateEmployeename(){
    //if it's NOT valid
    if(employeename.val().length < 4){
        employeename.addClass("error");
        employeenameInfo.text("We want names with more than 3 letters!");
        employeenameInfo.addClass("error");
        return false;
    }
    //if it's valid
    else{
        employeename.removeClass("error");
        employeenameInfo.text("Full Name.");
        employeenameInfo.removeClass("error");
        return true;
    }
}

然而,无论我尝试什么,都会给我带来错误,我真的被卡住了。谢谢你的帮助。这也带来了信息字段的另一个问题,我是否可以存储原始文本并将其还原为新字符串?

您可以使用$获取触发事件的字段(此)。您还应该将info字段作为info类的同级

$('input.to_be_validated').blur(validateInput);

function validateInput(e){
    var input = $(this)
    var info = input.parent.find('.info')
    //if it's NOT valid
    if(input.val().length < 4){
        input.addClass("error");
        info.text("We want names with more than 3 letters!");
        info.addClass("error");
        return false;
    }
    //if it's valid
    else{
        input.removeClass("error");
        info.text("Full Name.");
        info.removeClass("error");
        return true;
    }
}
$('input.to\u be\u validated').blur(validatedinput);
函数验证输入(e){
变量输入=$(此)
var info=input.parent.find(“.info”)
//如果它是无效的
if(input.val().length<4){
input.addClass(“错误”);
text(“我们希望名称包含3个以上的字母!”);
info.addClass(“错误”);
返回false;
}
//如果有效的话
否则{
input.removeClass(“错误”);
信息文本(“全名”);
info.removeClass(“错误”);
返回true;
}
}

编辑:忘记信息字段

您需要做的就是引用传递到函数中的
字段
变量,因此您的代码变成:

function validateEmployeename(field, fieldinfo){
    //if it's NOT valid
    if(field.val().length < 4){
        field.addClass("error");
        fieldinfo.text("We want names with more than 3 letters!");
        fieldinfo.addClass("error");
        return false;
    }
    //if it's valid
    else{
        field.removeClass("error");
        fieldinfo.text("Full Name.");
        fieldinfo.removeClass("error");
        return true;
    }
}
函数validateEmployeename(字段,字段信息){
//如果它是无效的
if(field.val().length<4){
字段addClass(“错误”);
text(“我们希望名称包含3个以上的字母!”);
fieldinfo.addClass(“错误”);
返回false;
}
//如果有效的话
否则{
field.removeClass(“错误”);
fieldinfo.text(“全名”);
fieldinfo.removeClass(“错误”);
返回true;
}
}

您也可以使用多个选择器:

$("input[name='employeename'], input[name='employeename2']").blur(function() {
    // put your validation routine for fields that should contain names
    $(this).next("#employeenameInfo").html("info here"); // note that you don't have unique id here, better to find element you want to put your error message by tagname/class, like "span.error"
});

$("input[name='employeemail'], input[name='employeemail2']").blur(function() {
    // put your validation routine for fields that should contain email addresses
    $(this).next("#emailInfo").html("info here"); // note that you don't have unique id here, better to find element you want to put your error message by tagname/class, like "span.error" 
});
这样,您就不需要向验证函数传递任何内容,只要您有适当的元素来填充附近的错误消息,所有内容都将围绕
$(this)
,得到解决:

<input type="text" name="employeename" />
<span class="error" />


那么,您能否显示不起作用的代码?很难修复看不见的代码…要恢复“info”字段内容,请创建一个字典:
var infoDic={employeenameInfo:“全名”,xxx:“xxx”,等等}。然后使用infoDic检索您的域的内容。谢谢,我们将尽快试用!
<input type="text" name="employeename" />
<span class="error" />