asp.net mvc textarea与jQuery中换行符的字符计数
我正在开发一个ASP.NET MVC web应用程序。我在视图中有一个文本区域,它绑定到一个最大长度为1000的模型asp.net mvc textarea与jQuery中换行符的字符计数,jquery,asp.net-mvc,validation,Jquery,Asp.net Mvc,Validation,我正在开发一个ASP.NET MVC web应用程序。我在视图中有一个文本区域,它绑定到一个最大长度为1000的模型 //Html: @Html.TextAreaFor(model => model.Description, 12, 50, new { @class = "form-control", @placeholder = "Mandatory" }) //Model class: [Required] [DisplayName("Event Description")] [Ma
//Html:
@Html.TextAreaFor(model => model.Description, 12, 50, new { @class = "form-control", @placeholder = "Mandatory" })
//Model class:
[Required]
[DisplayName("Event Description")]
[MaxLength(1000, ErrorMessage = "Maximum {1} characters.")]
public string Description { get; set; }
我还使用jQuery为用户显示一条消息,以便他们知道还有多少字符需要输入:
$('#Description').keyup(function () {
var maxlen = 1000;
var count = $(this).val().length;
var charLeft = maxlen - count;
var string = charLeft + " chracters left"
if (count > maxlen) {
this.value = this.value.substring(0, maxlen);
}
else {
$("#descriptionCharCount").text(string);
}
});
我发现当输入新行时,ASP.NET将插入2个空格,从而将字符数增加2。但是jQuery只增加了1。这导致了不匹配。如何解决此问题?原因:Windows使用两个字符(
\r\n
)表示新行,而某些浏览器仅使用其中一个字符(\n
)。因此,当模型绑定器将输入转换为字符串时,实际上有一个使用两个字符的字符串
解决这个问题的方法有很多,但“正确性”的程度各不相同。以下是一些解决这个问题的帖子:
\r
字符的方式编写长度检查算法,然后但是,请记住,这可能会产生一些意想不到的结果。例如,如果用户根据保存的输入下载一个文件,然后在记事本之类的程序中打开它(该程序只将
\r\n
组合框识别为换行符),他们将不会看到换行符。感谢您的快速响应。我将“有点”使用第一种方法。但我会做相反的事情,在jQuery长度计算中用'\r\n'替换'\n'。是的,我一开始考虑过,但我认为如果按Enter键,看到字符数增加2,可能会让人感到困惑。