Javascript替换函数不会删除字符串

0 javascript jquery

我不知道为什么这不起作用,而是做一些验证功能,并尝试在提交时忘记填写字段时将动态消息输出到警报.它仅适用于第二次单击提交按钮,只要删除字符串,其他所有内容都可以正常工作.

这是代码:

var fname = $('#fname');
var lname = $('#lname');

function validatefname(){
var a = fname.val().length;

if(a < 2) {
    fname.prev().addClass("error");
    if(msg.search("First Name") == -1) {
      msg+= "-Please enter your First Name\n";
    }
    return false;
} else {
    fname.prev().removeClass("error");
    msg.replace(/Please enter your First Name\n/g, "");
    return true;
}
}

fname.blur(validatefname);
fname.keyup(validatefname);

step4submit.click(function(){
    if(validatefname()) {
        step4form.submit();
        return true
    } else {
        msg+= "\nPlease fill out the fields marked in red";
        alert(msg);
        msg = "";
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

Ste*_*all 7

String.replace返回一个新字符串,而不是编辑进行替换调用的字符串.

你需要

msg = msg.replace( blah )
Run Code Online (Sandbox Code Playgroud)


Ada*_*kin 5

在JavaScript中,字符串是不可变的,它们永远不会改变.因此,如果您正在调用函数以某种方式修改字符串,则该函数将返回包含您的更改的字符串,而不是修改原始字符串.

更改正在执行替换的行以将替换的结果保存回原始变量,如下所示:

msg = msg.replace(/Please enter your First Name\n/g, "");
Run Code Online (Sandbox Code Playgroud)

(这有各种各样的性能和安全原因,但那是另一天/另一个问题).