Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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
带有CR和CF的javascript textarea maxlength问题_Javascript_Java_Jquery_Jsp_Textarea - Fatal编程技术网

带有CR和CF的javascript textarea maxlength问题

带有CR和CF的javascript textarea maxlength问题,javascript,java,jquery,jsp,textarea,Javascript,Java,Jquery,Jsp,Textarea,我对最大长度的计算有疑问 Javascript function charCount(characters) { document.getElementById('citation').onkeyup = function () { var s = this.value; document.getElementById('sBann').innerHTML = (characters - s.length) + " characters left.&qu

我对最大长度的计算有疑问

Javascript

function charCount(characters) {
    document.getElementById('citation').onkeyup = function () {
      var s = this.value;
      document.getElementById('sBann').innerHTML = (characters - s.length) + " characters left.";
    };
}
JSP:


剩余字符。
我的文本区域的最大长度为1650,其中也应包含空格。 我有一个创建页面。 当我在UI中键入一些内容时,它将行尾作为1个字符考虑在内,最多允许1650个字符,并防止用户输入更多内容和细节。 但在服务器端,行的末尾被视为CR和CF的两个字符,虽然JS计算1650,但数据会与CR和CF一起插入,以DB为单位的长度大于1650,例如1680。 在DB端,这个字段是clob,所以即使它存储>1650,我也没有问题

现在我有了一个编辑屏幕,在那里我必须显示相同的文本区域,并允许用户进行编辑。 对于上面我输入1650但DB显示1680的同一个示例,UI中的textarea显示1680个字符,因此显示剩余字符数的加载范围是-20,因为服务器端包含了CR/CF值


如何处理客户端验证以包含CR/CF的2个字符?

考虑以下几点

$(函数(){
功能特性英尺(el){
var max=parseInt($(el).attr(“maxLength”);
var cur=$(el).val().length;
返回最大电流;
}
函数allowType(el){
var结果=真;

如果(字符)ft(el)考虑以下因素

$(函数(){
功能特性英尺(el){
var max=parseInt($(el).attr(“maxLength”);
var cur=$(el).val().length;
返回最大电流;
}
函数allowType(el){
var结果=真;

如果(charactersLeft(el)它的回车
CR
和换行
LF
。在Windows上,如果你
console.log()
textarea值,它将不返回
CR或\r
它只返回
\n
,在mac os上我不确定

您有重复的事件

onKeyUp="charCount(<%=maxCitationLength%>);"
// and
document.getElementById('citation').onkeyup = function () {

剩余20个字符。

它的回车
CR
和换行
LF
。在Windows上,如果您
console.log()
textarea值,它将不会返回
CR或\r
它只返回
\n
,在mac os上我不确定

您有重复的事件

onKeyUp="charCount(<%=maxCitationLength%>);"
// and
document.getElementById('citation').onkeyup = function () {

剩余20个字符。

非常感谢您的回复。您能解释一下您想在这里做什么吗?@JNPW我正在努力解决您的问题。在Windows中,行尾(EOL)由回车(CR)和新行(NL)表示,但在Linux中这只是新行(NL)。无论哪种方式,它都只能是1个字符。如果它是2个字符,您可以从每行中删除CR。非常感谢您的回复。您能解释一下您在这里想做什么吗?@JNPW我正在努力解决您的问题。在Windows中,行尾(EOL)由回车(CR)和新行(NL)表示,但在Linux中,这只是新行(NL)。无论哪种方式,它都应该只有1个字符。如果它是2个字符,则可以从每行中删除CR。