Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 返回的JQuery.length()和.NET.length之间的差异_Asp.net_Jquery_String - Fatal编程技术网

Asp.net 返回的JQuery.length()和.NET.length之间的差异

Asp.net 返回的JQuery.length()和.NET.length之间的差异,asp.net,jquery,string,Asp.net,Jquery,String,我编写了一个jQuery函数来检查给定文本框中的字符总数,如果超过最大(用户定义的)长度,就会弹出警告 示例:(大大简化): 这是可以预期的,但就像一个优秀的小开发人员一样,我也会根据输入文本指定给的字段长度(在我的域对象上)执行服务器端验证 就在那里,我注意到以下字符串: 12<RETURN>34 但是,问题不仅仅是检测字符数,因为一旦系统检测到输入的字符过多,它应该(客户端)将所有多余的字符去除(这可能不止一个,因为用户可能会将过多的文本复制粘贴到文本框中) 比如: if (

我编写了一个jQuery函数来检查给定文本框中的字符总数,如果超过最大(用户定义的)长度,就会弹出警告

示例:(大大简化):

这是可以预期的,但就像一个优秀的小开发人员一样,我也会根据输入文本指定给的字段长度(在我的域对象上)执行服务器端验证

就在那里,我注意到以下字符串:

12<RETURN>34 
但是,问题不仅仅是检测字符数,因为一旦系统检测到输入的字符过多,它应该(客户端)将所有多余的字符去除(这可能不止一个,因为用户可能会将过多的文本复制粘贴到文本框中)

比如:

if (textLength > maxlength) {
    self.val(text.substr(0, maxlength));
}

这当然会让我陷入麻烦,如果我计算返回的两倍,因为错误的字符数有被删除的风险。那么,我如何才能可靠地删除正确数量的字符呢?

这是我的最终解决方案,感觉有点脏,但能完成任务

// Calculate the length of a string, but take care to count returns for 2 characters instead 
        // of one. That way, we should get the same length as in .NET

        function GetCurrentLength(txt) {
            return txt.length + GetNumberOfReturns(txt);
        }

        function GetNumberOfReturns(txt)
        {
            var numberOfReturns = 0
            var enterRegExpr = txt.match(/\n/g);
            if (enterRegExpr)
                numberOfReturns = enterRegExpr.length ;

            return numberOfReturns;
        }

        function CutToMaxLength(txt, maxlength) {
            return txt.substr(0, maxlength - GetNumberOfReturns(txt));
        }

因为我认为,\ n在.net语言中也被计算,而在jQuery中,它被剥离,因此不被计算。请检查这个类似的问题以找到解决方法,我确实可以得到像javascript中那样的正确计数,谢谢。然而,问题还不止于此。我已经更新了原始问题。
\r\n
\r\n
,从不
\n\r
if (textLength > maxlength) {
    self.val(text.substr(0, maxlength));
}
// Calculate the length of a string, but take care to count returns for 2 characters instead 
        // of one. That way, we should get the same length as in .NET

        function GetCurrentLength(txt) {
            return txt.length + GetNumberOfReturns(txt);
        }

        function GetNumberOfReturns(txt)
        {
            var numberOfReturns = 0
            var enterRegExpr = txt.match(/\n/g);
            if (enterRegExpr)
                numberOfReturns = enterRegExpr.length ;

            return numberOfReturns;
        }

        function CutToMaxLength(txt, maxlength) {
            return txt.substr(0, maxlength - GetNumberOfReturns(txt));
        }