2 回答

TA貢獻1794條經驗 獲得超7個贊
您忘記了 jQuery CDN 并且正在使用p而不是input,那么您需要使用html()而不是val()因為該p元素不需要值。
而且你不需要寫$(this).val((tval).substring(0, tlength - 1)),因為它會返回到句子的開頭,所以只需使用 apreventDefault()來停止寫。
嘗試這個 :
function limitMessage(id, e) {
var tval = $('#' + id).html(),
tlength = tval.length,
set = 10,
remain = parseInt(set - tlength);
if (remain <= 0 && e.which !== 0 && e.charCode !== 0) {
e.preventDefault();
}
}
body {
background-color: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id="business_title" contentEditable="true" onkeypress="limitMessage(this.id,event);">hello</p>

TA貢獻1860條經驗 獲得超9個贊
請嘗試這個。
function limitMessage(id, e) {
var tval = $('#' + id).html(),
tlength = tval.length,
set = 10,
remain = parseInt(set - tlength);
if (remain <= 0 && e.which !== 0 && e.charCode !== 0) {
$('#' + id).html((tval).substring(0, set + 1));
e.preventDefault();
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id="business_title" contentEditable="true" onkeypress="limitMessage(this.id,event);">hhhhh</p>
解釋
您使用的是 .val 而不是 .html。
當您將字符串插入回去時,光標重置為字符串的開頭,并添加新的字符,并修剪字符串末尾的字符。為了解決這個問題,我添加了 e.preventDefault 以阻止添加字符。
- 2 回答
- 0 關注
- 162 瀏覽
添加回答
舉報