验证文本框中特定字符串的Javascript

验证文本框中特定字符串的Javascript,javascript,asp.net,Javascript,Asp.net,这里是文本框结果的样子 目标是验证name.domain,方法是确保用户在提交前将name.domain替换为textbox上的服务器名。如果用户没有用他们的服务器名替换name.domain,那么它将发送警报消息并返回false,直到用户正确替换为止 这是我的密码 function DomainValidate() { var arrayOfLines = document.getElementById('txt').value.split('/n'); a

这里是文本框结果的样子

目标是验证
name.domain
,方法是确保用户在提交前将
name.domain
替换为textbox上的服务器名。如果用户没有用他们的服务器名替换
name.domain
,那么它将发送警报消息并返回false,直到用户正确替换为止

这是我的密码

function DomainValidate() {

        var arrayOfLines = document.getElementById('txt').value.split('/n');

        arrayOfLines.shift(); //use shift to skip the first line

        for (i = 0; i < arrayOfLines.length; i++) {

           //somewhere here need to split to get name.domain and then verify it
            var domainName = arrayOfLines[i].split(" ", 2);

            if(domainName.Equals("name.domain")
            {
               alert("You must replace name.domain to your new server name");
               return false;
            }
        }

}
函数域验证(){
var arrayOfLines=document.getElementById('txt').value.split('/n');
arrayOfLines.shift();//使用shift跳过第一行
对于(i=0;i

我不确定这些是否正确,因为我无法调试javascript。

我看到的第一个问题是换行符的字符不正确。它应该是
\n
而不是
/n
。我看到的第二个问题是
I
是一个全局变量,而它应该是局部变量。第三个问题是
arrayOfLines[I]。拆分(“”,2);
返回一个数组,但您将其视为在下一行
if(domainName.Equals('name.domain')
上返回字符串

通过这些更正,您的代码看起来更像这样:

function domainValidate() {
    var arrayOfLines = document.getElementById('txt').value.split('\n');

    arrayOfLines.shift(); //use shift to skip the first line

    for (var i = 0; i < arrayOfLines.length; i++) {
        var line = arrayOfLines[i].trim();
        // Grab the second part of the split line, which represents the domain name
        var parts = line.split(' ');
        var domainName = parts[parts.length - 1];

        if (!domainName || domainName === 'name.domain') {
            alert("You must replace name.domain to your new server name");
            return false;
        }
    }
}
函数域验证(){
var arrayOfLines=document.getElementById('txt').value.split('\n');
arrayOfLines.shift();//使用shift跳过第一行
对于(变量i=0;i

据我所知,在不进行测试的情况下,这应该可以像预期的那样工作。但测试这一点的最佳方法是使用。添加html和此脚本,并调用它以查看它是否产生预期的结果。

我认为最简单的方法

假设textbox的id是DomainText

src = document.getElementById("domainTxt");
if(verifyInput(src.value)){
    //submit your form here
} else
{
    return false;
}

function verifyInput(txtVal){
    if(txtVal.indexOf("name.domain") >-1){
        return false;
    }else {
        return true;
    }
}

我正在测试和调试javascript,
domainName
接收到空字符串,它应该是我遗漏的name.doman,甚至我用服务器名替换了它。但是ArrayOfLines确实有
144.68.238.87 name.domain
。我怀疑这与错误的拆分方式有关?它必须做特定的whitesp吗ace还是应该不管第二部分有多少空格?我在JSFIDLE中测试后更新了代码。现在应该可以为您工作了。另一个问题是循环继续在last name.domain行之后运行,它可能从下一个空行获得空字符串。您知道如何防止到达最后一行然后停止它吗从读取空行开始。哦,嘿,对不起,您需要做的就是使用
arrayOfLines[i+1]
提前检查
arrayOfLines
中的下一个元素,并验证该行是否为非空。请确保验证
i+1
生成的索引是否小于
arrayOfLines。不过,长度
会出错。
src = document.getElementById("domainTxt");
if(verifyInput(src.value)){
    //submit your form here
} else
{
    return false;
}

function verifyInput(txtVal){
    if(txtVal.indexOf("name.domain") >-1){
        return false;
    }else {
        return true;
    }
}