计算多个文本区域中字母的函数

Function for counting letters in multiple textareas

我正在尝试创建一个用于多个文本区域的函数,用于计算里面的字母并将它们显示在标题中。

这是我到目前为止所得到的,我正在尝试将变量传递给函数:

$('[name=messagetext]').keyup(countinput("[name=messagetext]", "#count_messagetext", "#000000"));
$('[name=messagetext]').keydown(countinput("[name=messagetext]", "#count_messagetext", "#000000"));

$('[name=abouttext]').keyup(countinput("[name=abouttext]", "#count_abouttext", "#000000"));
$('[name=abouttext]').keydown(countinput("[name=abouttext]", "#count_abouttext", "#000000"));

function countinput(name, countid, color) {
 var count = $(name).val().length;
 $(countid).text(count);
 if (count >= 170) {
  $(countid).css('color', '#ed7777');
  $(countid).css('font-weight', '600');
 } else {
  $(countid).css('color', color);
  $(countid).css('font-weight', '700');
 }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3 style="text-align: center; font-size: 1.7rem; font-weight: 600; color: #414456;">Message (<span id="count_messagetext" value="0">0</span>/100)</h3>
<textarea rows="4" maxlength="100" style="height: auto !important;" name="messagetext" type="text" placeholder="Write your own message"></textarea>

<h3 style="text-align: center; font-size: 1.7rem; font-weight: 600; color: #414456;">About (<span id="count_abouttext" value="0">0</span>/100)</h3>
<textarea rows="4" maxlength="100" style="height: auto !important;" name="abouttext" type="text" placeholder="Write your own message"></textarea>

给你:)

我改的是

  • 它会自动检测 <h3> 我们必须更改颜色,这样您就不会 每次都要指定
$( object ).prev('h3')
  • Keydown 事件触发两者而不是为两个 id 复制同一行
$('#messagetext, #abouttext').keydown
  • 自动查找需要字母数量的跨度,因此无需为其指定 id
$( object ).prev('h3').find('span').text(object.val().length);

代码如下:

$('#messagetext, #abouttext').keydown(function() {
  countinput($(this), 'black') 
});

function countinput(object, color) {

    $( object ).prev('h3').find('span').text(object.val().length);

 if (object.val().length >= 5) {   
    
  $( object ).prev('h3').css('color', 'red');
        
  $( object ).prev('h3').css('font-weight', '600');
 }
 else {
  $( object ).prev('h3').css('color', color);
   $( object ).prev('h3').css('font-weight', '700');
 }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<h3 style="text-align: center; font-size: 1.7rem; font-weight: 600; color: #414456;">Message (<span id="count_messagetext" value="0">0</span>/100)</h3>
<textarea rows="4" maxlength="100" style="height: auto !important;" id="messagetext" type="text" placeholder="Write your own message"></textarea>

<h3 style="text-align: center; font-size: 1.7rem; font-weight: 600; color: #414456;">About (<span id="count_abouttext" value="0">0</span>/100)</h3>
<textarea rows="4" maxlength="100" style="height: auto !important;" id="abouttext" type="text" placeholder="Write your own message"></textarea>

您可以为此只使用一个事件。

$('textarea').on('keydown, keyup', function(){
 
 var name = $(this).attr('name');
 var countid = $('#count_' + name);
 var count = $(this).val().length;
 
 //Default Color
 var color = '#000000';
 
 //You can just replace the default color here.
 if(name == 'messagetext'){
  color = '#000000';
 }else if(name == 'abouttext'){
  color = '#000000';
 }
 
 if (count >= 170) {
  $(countid).css('color', '#ed7777');
  $(countid).css('font-weight', '600');
 } else {
  $(countid).css('color', color);
  $(countid).css('font-weight', '700');
 }
 $(countid).html(count);
 
});
<h3 style="text-align: center; font-size: 1.7rem; font-weight: 600; color: #414456;">Message (<span id="count_messagetext" value="0">0</span>/100)</h3>
<textarea rows="4" maxlength="100" style="height: auto !important;" name="messagetext" type="text" placeholder="Write your own message"></textarea>

<h3 style="text-align: center; font-size: 1.7rem; font-weight: 600; color: #414456;">About (<span id="count_abouttext" value="0">0</span>/100)</h3>
<textarea rows="4" maxlength="100" style="height: auto !important;" name="abouttext" type="text" placeholder="Write your own message"></textarea>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>