1

如何Kentico計算的輸入的內容長度的文本區域在窗體上,有多少價值並給它一個換行符?根據我的JavaScript計算,換行符是2個字符,但好像Kentico計算它超過2個字符。Kentico CMS:文本區域輸入長度計算並確定最大長度 - 特別是當有文本換行

摘要的問題:

我有我的Kentico網站2500集上的文本輸入區的最大長度的形式。

我已經在文本區域輸入了一些文本並使用JavaScript計算(用於顯示用戶剩下的字符數)字符長度恰好爲2500(包括換行符和空格),因此應該驗證併發送。然而,Kentico沒有輸入,說我的最大長度已被超過。請看下圖:

enter image description here

如果我刪除換行符並鍵入一些額外的字符,使我的性格計算回升到2500,形式發送而不失效。使用

測試失敗:

Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。 Quisque vitae augue ac enim molestie scelerisque a id metus。懸念,iaculis quis accumsan ut,conquer vitae mauris。 Nunc luctus vulputate scelerisque。 Nullam ullamcorper porta elit,sed ornare lorem placerat dictum。 Sed quis enim quis nibh convallis sagittis nec vitae felis。 SED porttitor,NIBH等volutpat posuere,預期值,也DUI sollicitudin SAPIEN,在scelerisque拉克絲ELIT QUIS enim。在metus lectus上完成。 sed quis enim quis nibh convallis sagittis nec vitae felis。 SED porttitor,NIBH等volutpat posuere,預期值,也鐓sollicitudin SAPIEN,在 scelerisque拉克絲ELIT QUIS enim。在metus lectus上完成。 Lorem ipsum 多爾坐在amet,consectetur adipiscing elit。 Quisque vitae augue ac enim molestie scelerisque a id metus。 Suspendisse purus justo,iaculis 需要幫助,請提供問題。 Nunc luctus vulputate scelerisque。 Nullam ullamcorper porta elit,sed ornare lorem placerat dictum。 Sed quis enim quis nibh convallis sagittis nec vitae felis。 桑達porttitor,NIBH等volutpat posuere,預期值,也DUI sollicitudin SAPIEN,在scelerisque拉克絲ELIT QUIS enim。 Donec at metus lectus.Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Quisque vitae augue ac enim molestie scelerisque a id metus。 Suspendisse purus jus

to,iaculis quis accumsan ut,conquest vitae mauris。 Nunc luctus vulputate scelerisque。 Nullam ullamcorper porta elit,sed ornare lorem placerat dictum。 Sed quis enim quis nibh convallis sagittis nec vitae felis。 sed porttitor,nibh et volutpat posuere,neque dui sollicitudin sapien,at scelerisque lacus elit quis enim。在metus lectus上完成。 sed quis enim quis nibh convallis sagittis nec vitae felis。 SED porttitor,NIBH等volutpat posuere,預期值,也鐓sollicitudin SAPIEN,在 scelerisque拉克絲ELIT QUIS enim。在metus lectus上完成。 Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。對於員工,並從Quisque簡歷augue metus桑達congue的 該污染物。 Suspendisse普魯斯的公正, Morbi tristique Aenean iaculis UT,congue簡歷mauris。現在哀悼Vulputate 巧克力。 說Adipiscing接力比賽,但足球LOREM投資。對於他的模範生活的箭頭,但有任何人誰都會NIBH convallis貓。然而 代理,適配器和週末雜技,獅子座護理 SAPIEN,但任何開發商的熱應力。 lectus.Lorem而是恐懼本身,直到胡蘿蔔,強化本科教育。對於員工,以及從 Quisque簡歷augue metus桑達congue污染物。 按摩辣椒只是抓住利奧生活環境d任何層

試驗中使用的是經過;通知該斷線已被刪除,2個額外的字符添加到該端,使之回升到2500人物

Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。每個人從生活 的恐懼污染物ullamcorper得力士居住者enim molestie。 Suspendisse普魯斯 的公正,奧迪奧的Lorem NIBH accumsan UT,congue簡歷mauris。現在哀悼 Vulputate巧克力。 Adipiscing接力比賽,但足球LOREM 投資。對於他的模範生活 但箭頭是有任何人誰都會NIBH convallis貓。然而,創新,適配器和週末雜技,獅子座護理 SAPIEN,但任何開發商的熱應力。直到但擔心畢業。他的模範生活,但誰的 箭一個是NIBH convallis貓。然而 代理,適配器和週末雜技,獅子座SAPIEN照顧,但對於任何開發商 熱應力。直到但擔心畢業。 Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。對於員工,並從Quisque簡歷augue metus桑達congue的 該污染物。 Suspendisse普魯斯的公正, Morbi tristique Aenean iaculis UT,congue簡歷mauris。現在哀悼Vulputate 巧克力。 說Adipiscing接力比賽,但足球LOREM投資。對於他的模範生活的箭頭,但有任何人誰都會NIBH convallis貓。然而 代理,適配器和週末雜技,獅子座護理 SAPIEN,但任何開發商的熱應力。 lectus.Lorem而是恐懼本身,直到胡蘿蔔,強化本科教育。對於員工,以及從 Quisque簡歷augue metus桑達congue污染物。 辣椒按摩療法,搶利奧 開始的任何層。現在哀悼Vulputate巧克力。 Adipiscing 接力比賽,但足球LOREM投資。對於他的模範生活的箭,但誰貓convallis QUIS NIBH 。然而,創新,適配器和週末 雜技,獅子座SAPIEN照顧,但對於任何開發商熱應力 。直到但擔心畢業。對於他的模範生活的箭,但誰 QUIS NIBH convallis貓。然而,創新,適配器和週末雜技, LEO SAPIEN照顧,但任何開發商的熱應力。直到 但擔心畢業。 Lorem存有悲坐阿梅德,consectetur adipiscing ELIT 。對於員工,以及從 Quisque簡歷augue metus桑達congue污染物。 Suspendisse普魯斯的公正,奧迪奧的Lorem NIBH accumsan UT,congue簡歷 開始。現在哀悼Vulputate巧克力。 Adipiscing 接力比賽,但足球LOREM投資。對於他的模範生活的箭,但誰貓convallis QUIS NIBH 。然而,創新,適配器和週末 雜技,獅子座SAPIEN照顧,但對於任何開發商熱應力 。直到但擔心畢業。Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Quisque vitae augue ac enim molestie scelerisque a id metus。 Suspendisse普魯斯胡斯托,iaculis QUIS accumsan UT,congue簡歷 聖莫爾迪

+1

我試着用複製的文本,最大長度爲2500,它的工作原理。看起來CMSTextbox除了檢查text.Length屬性和最大長度之外什麼也沒做。你確定沒有其他事情了嗎?您的線是否打破單個換行符或雙行換行符?如果它是兩個,它會回到2502個字符。 –

+0

是的,我認爲錯誤在於我的長度計算中換行符不匹配到Kentico給換行符的長度。我的計算'textareaElement.val()。length'給出了換行符的長度爲1,而Kentico的計算給出了換行符的值2。我已經回顧了我如何計算輸入的長度,以便每個換行符在總字符數上增加一個額外的1。我會將我的計算結果作爲答案發布。 –

回答

0

問題的事實,我在我的JavaScript計算給長度1到換行符,從而Kentico的計算給出了2到長度鋪設換行符。所以他們沒有匹配。因此,我的角色櫃檯表示,輸入文本的長度是確定的,但是Kentico的支票認爲它超過了最大長度。

這是我以前有:

enteredText = textareaVariableName.val(); 
characterCount = enteredText.length; //one line break entered returned 1 

這就是我把它改爲:

enteredText = textareaVariableName.val(); 
enteredTextEncoded = escape(enteredText); 
//next I match any line break characters - %0A - after encoding the text area text 
linebreaks = enteredTextEncoded.match(/%0A/g); 
(linebreaks != null) ? linebreaksLength = linebreaks.length : linebreaksLength = 0; 
characterCount = enteredText.length + linebreaksLength; //one line break entered now returns 2 

有沒有更好的辦法,我可以檢查換行符在文本中,而不是編碼文本,然後檢查子字符串%0A?

編輯/更新:我相信以下是一個更好的解決方案,而不是我上面做的。

var limit = 2500; //for example 
enteredText = textareaVariableName.val(); 
numberOfLineBreaks = (enteredText.match(/\n/g)||[]).length; 
left = limit - enteredText.length - numberOfLineBreaks; 
if (left < 0) { 
    //character count over code here 
} else { 
    //character count within limits code here    
} 
0

這基本上是與瀏覽器相關的JavaScript問題。在Firefox或Chrome或任何其他基於WebKit的瀏覽器中,textareaVariableName.val()。length將僅爲新行(\ n)計算1個字符。 jQuery實現也一樣。但在IE document.getElementById('textareaVariableName')中,value.length會爲新行計算2(\ r \ n)

在Kentico中,文本被驗證爲實際的字符數,因此驗證失敗。

這個快速修復是簡單的正則表達式,用於計算實際長度:

function getTextLength(elementId){ 
    if (elementId) { 
     var elem = document.getElementById(elementId); 
     if (elem) { 
     var str = elem.value; 
     if (str) { 
      str = str.replace(/(\r\n|\r|\n)/g, '\r\n'); 
      return str.length; 
     } 
     } 
    } 
    return 0; 
} 

這會幫助你正確地獨立客戶所使用的瀏覽器的數字符。