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