Jquery 限制文本区域中的行数(行和回车键)加上显示行数
我正在寻找一种使用jquery/html/甚至css来完成以下工作的方法 我的文本区域是固定大小的,1个字体大小/类型,我希望能够做到以下几点Jquery 限制文本区域中的行数(行和回车键)加上显示行数,jquery,html,textarea,limit,rows,Jquery,Html,Textarea,Limit,Rows,我正在寻找一种使用jquery/html/甚至css来完成以下工作的方法 我的文本区域是固定大小的,1个字体大小/类型,我希望能够做到以下几点 将行数限制为18行 显示用户迄今为止使用过的行数(有点像使用字符的twitter方法,但显示使用的行数) 行定义:当用户在键盘上按enter键并转到新行时,或者在文本区域中通过连续在文本区域中自然键入来创建新行时,我的项目的行。我基本上有一个固定大小的textarea,用户不能超出我设置的限制。我不会为您的问题提供任何代码片段,只提供一种我如何看待解
- 将行数限制为18行
- 显示用户迄今为止使用过的行数(有点像使用字符的twitter方法,但显示使用的行数)
行定义:当用户在键盘上按enter键并转到新行时,或者在文本区域中通过连续在文本区域中自然键入来创建新行时,我的项目的行。我基本上有一个固定大小的textarea,用户不能超出我设置的限制。我不会为您的问题提供任何代码片段,只提供一种我如何看待解决方案的方法。基于javascript库的算法,可以检索文本和文本中所有字符的长度(以像素为单位)。如果您在文本框中使用的是唯一字体,那么每次一行中的像素数等于或低于新行中使用的实际像素数时,您都可以知道该行何时完成。在伪代码中,它将如下所示:
var textBoxLineInPixels = 300 //or getting the actual number through DOM;
onChangeEvent {
var totalNumberOfPixels = getNumberOfPixelsFromElement(idToYourTextBox);
var numberOfLinesUsed = totalNumberOfPixels / textBoxLineInPixels;
update(idToYourNumberOfLinesContainer, numberOfLinesUsed);
}
将textarea中的总像素数除以一行中的像素数,将得到textarea中当前使用的行数。我不会提供任何代码片段来解决您的问题,而只是介绍我如何看待解决方案。基于javascript库的算法,可以检索文本和文本中所有字符的长度(以像素为单位)。如果您在文本框中使用的是唯一字体,那么每次一行中的像素数等于或低于新行中使用的实际像素数时,您都可以知道该行何时完成。在伪代码中,它将如下所示:
var textBoxLineInPixels = 300 //or getting the actual number through DOM;
onChangeEvent {
var totalNumberOfPixels = getNumberOfPixelsFromElement(idToYourTextBox);
var numberOfLinesUsed = totalNumberOfPixels / textBoxLineInPixels;
update(idToYourNumberOfLinesContainer, numberOfLinesUsed);
}
将文本区域中的总像素数除以行中的像素数将得到文本区域中当前使用的行数。这并不是问题的确切答案,但这将限制键入时文本区域中的字符数/倒计时 同时删除任何不需要的字符 CSS:
div.textarea-wrap{
填充:8px 0px;
边界半径:3px;
职位:亲属;
利润率:5px0px 15px0px;
}
文本区域#样式化文本区域{
宽度:93.5%;
高度:120px;
字体大小:12px;
边框:1px实心板岩灰色;
边界半径:3px;
填充:8px 3%;
字体系列:Tahoma,无衬线;
背景:#E3E9ED;
}
.剩余{
利润率:3px0px;
线高:10px;
}
剩余部分p{
颜色:浅灰色;
浮动:对;
利润率:4px3%0px 0px;
浮动:对;
}
.剩余投入{
宽度:27px;
边界:0;
填充:0;
边界半径:0;
背景:无;
颜色:浅灰色;
浮动:对;
保证金:0;
}
Javascript:
<script>
function clean(el){
var textfield = document.getElementById(el);
var regex = /[^a-z 0-9?!.,]/gi;
if(textfield.value.search(regex) > -1) {
textfield.value = textfield.value.replace(regex, "");
}
}
// Text counter
var maxAmount = <?php echo($message_input_size);?>;
function textCounter(textField, showCountField) {
if (textField.value.length > maxAmount) {
textField.value = textField.value.substring(0, maxAmount);
} else {
showCountField.value = maxAmount - textField.value.length;
}
}
</script>
功能清洁(el){
var textfield=document.getElementById(el);
var regex=/[^a-z 0-9?!,]/gi;
if(textfield.value.search(regex)>-1){
textfield.value=textfield.value.replace(regex,“”);
}
}
//文本计数器
var maxAmount=;
函数textCounter(textField,showCountField){
如果(textField.value.length>maxAmount){
textField.value=textField.value.substring(0,maxAmount);
}否则{
showCountField.value=maxantium-textField.value.length;
}
}
HTML:
剩余字符
不完全是问题的答案,但这将限制您键入文本区域中的字符数/倒计时
同时删除任何不需要的字符
CSS:
div.textarea-wrap{
填充:8px 0px;
边界半径:3px;
职位:亲属;
利润率:5px0px 15px0px;
}
文本区域#样式化文本区域{
宽度:93.5%;
高度:120px;
字体大小:12px;
边框:1px实心板岩灰色;
边界半径:3px;
填充:8px 3%;
字体系列:Tahoma,无衬线;
背景:#E3E9ED;
}
.剩余{
利润率:3px0px;
线高:10px;
}
剩余部分p{
颜色:浅灰色;
浮动:对;
利润率:4px3%0px 0px;
浮动:对;
}
.剩余投入{
宽度:27px;
边界:0;
填充:0;
边界半径:0;
背景:无;
颜色:浅灰色;
浮动:对;
保证金:0;
}
Javascript:
<script>
function clean(el){
var textfield = document.getElementById(el);
var regex = /[^a-z 0-9?!.,]/gi;
if(textfield.value.search(regex) > -1) {
textfield.value = textfield.value.replace(regex, "");
}
}
// Text counter
var maxAmount = <?php echo($message_input_size);?>;
function textCounter(textField, showCountField) {
if (textField.value.length > maxAmount) {
textField.value = textField.value.substring(0, maxAmount);
} else {
showCountField.value = maxAmount - textField.value.length;
}
}
</script>
功能清洁(el){
var textfield=document.getElementById(el);
var regex=/[^a-z 0-9?!,]/gi;
if(textfield.value.search(regex)>-1){
textfield.value=textfield.value.replace(regex,“”);
}
}
//文本计数器
var maxAmount=;
函数textCounter(textField,showCountField){
如果(textField.value.length>maxAmount){
textField.value=textField.value.substring(0,maxAmount);
}否则{
showCountField.value=maxantium-textField.value.length;
}
}
HTML:
剩余字符
如果用户使用右键单击->粘贴将文本粘贴到文本区域怎么办?如果用户使用右键单击->粘贴将文本粘贴到文本区域怎么办?谢谢,但我相信有一个更简单的JavaScript版本可以实现这一点。我已经尝试过这个解决方案,但它似乎根本不起作用。您的链接中提供的解决方案在某些情况下(例如,在框中复制/粘贴)是无效的。虽然我给你的解决方案看起来很简单,但可能还有其他的解决方案。祝你好运谢谢,我只是对JavaScript不够了解,不知道如何做你的建议:(……我理解你的意思,是的,我想那可能会有用……好的,没问题。但是我没有找到一个标准的、简单易用的解决方案来解决你的问题,我想在这一点上你必须自己找到一个