Максимальное количество символов в текстовом поле с jquery

Objective C является языком..., это определяет все вещи как ключевые слова для определения объектов, синтаксиса для обмена сообщениями объекта, подобных вещей.

Какао является платформой разработки (это - на самом деле платформа зонтика, которая комбинирует три других платформы, Основу, AppKit и CoreData).

Эти платформы (Какао) определяют все объекты, которые хороши использовать и взаимодействовать с операционной системой, а также многими функциями. Например, Какао определяет вещи как NSString и NSObject. Какао может в настоящее время использоваться с другими привязками к языку, такими как Python или рубин, и использоваться, чтобы использоваться с Java также. Так, при использовании Какао с Java Вы все еще добрались бы NSString объект, но Вы назвали бы и использовали бы его из JAVA-приложения.

, не связываясь с одной из платформ Какао, Objective C идет с только очень простым Классом объекта как с предопределенным корневым классом.

24
задан SaidbakR 11 May 2015 в 15:46
поделиться

11 ответов

Я думаю, что лучше всего использовать свойство maxlenght + jquery keydown, keyup, paste события

// text input maximum lenght
$(document).on('keydown keyup paste', 'input[type=text]', function(e) {
  var textArea = $('input[type=text]').val(),
    textLenght = textArea.length,
    limit = $('textarea').attr('maxlength'),
    remain = 'left ' + parseInt(limit - textLenght) + ' chars';
  $('#remain-title').text(remain);
  if (textLenght > 500) {
    $('textarea').val((textArea).substring(0, limit))
  }
});

// tex area maximum lenght
$(document).on('keydown keyup paste', 'textarea', function(e) {
  var textArea = $('textarea').val(),
    textLenght = textArea.length,
    limit = $('textarea').attr('maxlength'),
    remain = 'left ' + parseInt(limit - textLenght) + ' chars';
  $('#remain-description').text(remain);
  if (textLenght > 500) {
    $('textarea').val((textArea).substring(0, limit))
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <label>Title</label>
  <p id="remain-title"></p>
  <input type="text" placeholder="Enter Title" maxlength="500"/>
</div>
<br>
<hr>
<br>
<div>
  <label>Description</label>
  <p id="remain-description"></p>
  <textarea placeholder="Enter custom description" rows="4" maxlength="500"></textarea>
</div>

См. JSFiddle

0
ответ дан 28 November 2019 в 22:26
поделиться

Попробуй это. Даже работает для копирования вставки с клавиатуры:

$("#comments").unbind('keyup').keyup(function(e){
    var val = $(this).val();
    var maxLength = 1000;
    $('#comments').val((val).substring(0, maxLength));
    $("#comments_length").text($("#comments").val().length);
});
0
ответ дан 28 November 2019 в 22:26
поделиться

попробуй это.

var charLmt = "200";//max charterer 
 $("#send-txt").keydown(function(){
   var _msgLenght = $(this).val().length;
   if (_msgLenght > charLmt) {
   $(this).val($(this).val().substring(0, charLmt));
  }
});
0
ответ дан 28 November 2019 в 22:26
поделиться

Я знаю, что это немного поздно, но я просто должен был это выяснить. Мне пришлось заставить его работать с длинами в байтах UTF8 и разрешать определенные нажатия клавиш. Вот что я придумал:

checkContent = function (event) {

    var allowedKeys = [8,46,35,36,37,38,39,40];
    var contentLength = lengthInUtf8Bytes(jQuery(event.currentTarget).val());
    var charLength = lengthInUtf8Bytes(String.fromCharCode(event.charCode));

    if (charLength + contentLength > 20) {

        if(jQuery.inArray(event.keyCode, allowedKeys) == -1) {
            event.preventDefault();
        } 
    }
}

countLength = function(event) {

    var len = lengthInUtf8Bytes(jQuery(event.currentTarget).val());
    jQuery('#length').html(len);
}


lengthInUtf8Bytes = function(str) {
    var m = encodeURIComponent(str).match(/%[89ABab]/g);
    return str.length + (m ? m.length : 0);
}

jQuery(function(){jQuery("#textarea").keypress(function(event){checkContent(event)}).keyup(function(event){countLength(event)})});

Вам нужно иметь текстовое поле с идентификатором #textarea и элемент для отображения текущей длины с идентификатором #length.

Событие нажатия клавиши определяет, разрешить или нет нажатие клавиши. Событие keyup подсчитывает размер данных в поле после того, как нажатие разрешено / запрещено.

Этот код работает со следующими клавишами: home, end, pagedown, pageup, backspace, delete, вверх, вниз, влево и вправо. Это не касается вставки из буфера обмена.

Надеюсь, кто-то найдет это полезным!

0
ответ дан 28 November 2019 в 22:26
поделиться

Опираясь на нажатие клавиш, keydown, keyup является ошибочным решением, поскольку пользователь может копировать и вставлять данные в текстовую область, не нажимая никаких клавиш.

Чтобы ограничить длину текста в текстовой области с помощью javascript, независимо от того, как туда попадают данные, вы должны вместо этого положиться на таймер setInterval.

setInterval(function() {
if ($('#message').val().length > 250) {
    $('#message').val($('#message').val().substring(0, 250));
}}, 500);

Очевидно, я предполагаю, что у вас есть идентификатор сообщения, назначенного вашей текстовой области.

0
ответ дан 28 November 2019 в 22:26
поделиться

ehm, textarea maxlength является допустимым атрибутом в html5? не поддерживается в ie9, вот и все.

w3nerds http://www.w3.org/TR/html-markup/textarea.html#textarea.attrs.maxlength

w3fools http: // www .w3schools.com / метки / att_textarea_maxlength.asp

1
ответ дан 28 November 2019 в 22:26
поделиться

Если вы измените свой js, чтобы он выглядел следующим образом, он должен работать для вас:

var $txtLenLeft = $('#txt-length-left'); // lets cache this since it isn't changing
$('#send-txt').keydown(function(e) { //take the event argument
   var Length = $(this).val().length; // lets use 'this' instead of looking up the element in the DOM
   var AmountLeft = maxLen - Length;
   $txtLenLeft.html(AmountLeft);
   if(Length >= maxLen && e.keyCode != 8){ // allow backspace
      e.preventDefault(); // cancel the default action of the event
   }
});

Вы можете увидеть рабочий пример здесь: http://jsfiddle.net/aP5sK/2/

1
ответ дан 28 November 2019 в 22:26
поделиться

Понял это:

$("#div_id").prop('maxlength', '80');

Я действительно не знаю, если что-то не так с этим решением, но оно сработало для меня.

3
ответ дан 28 November 2019 в 22:26
поделиться

Вот решение, использующее атрибут данных HTML5 для автоматической привязки ко всем необходимым текстовым областям:

$('textarea[data-max-length]').live('keypress', function(e) {
    if (String.fromCharCode(e.charCode || e.keyCode).match(/\S/) && $(this).val().length >= $(this).attr('data-max-length')) {
        e.preventDefault();
    }
});
0
ответ дан 28 November 2019 в 22:26
поделиться

Возврат false и использование .keypress () вместо .keyup () прекращает ввод после достижения длины. Вот пример в jsFiddle:

http://jsfiddle.net/p43BH/1/

Обновлен, чтобы разрешить backspace.

3
ответ дан 28 November 2019 в 22:26
поделиться

Простой способ сделать это - установить текст в текстовой области на подстроку полной суммы. Вы можете найти пример здесь:

http://www.mediacollege.com/internet/javascript/form/limit-characters.html

2
ответ дан 28 November 2019 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: