Действительно ли возможно обнаружить, сколько символов вставляется в текстовую область HTML и отменяет вставку если вне предела?
Править: то, что я пытаюсь сделать, предотвращают пользователя, вставляющего значительное количество символов (~3 миллиона), потому что он разрушает некоторые браузеры. Таким образом, я хочу отменить вставку, прежде чем их браузер запрется. Я делаю редактора документа, где пользователи, вероятно, попробуют это. Но они могут ввести столько, сколько они хотят.
вы можете сделать это в jQuery следующим образом:
$(document).ready(function(){
function limits(obj, limit){
var text = $(obj).val();
var length = text.length;
if(length > limit){
$(obj).val(text.substr(0,limit));
} else { // alert the user of the remaining char. I do alert here, but you can do any other thing you like
alert(limit -length+ " characters remaining!");
}
}
$('textarea').keyup(function(){
limits($(this), 20);
})
})
просмотреть демо-версию здесь .
Я предпочитаю использовать статические заводские методы следующего рода:
public final class CollectionUtils {
private CollectionUtils() {
}
public static <T> List<T> list(T... data) {
return Arrays.asList(data);
}
public static <T> ArrayList<T> newArrayList() {
return new ArrayList<T>();
}
public static <T> ArrayList<T> newArrayList(T... data) {
return new ArrayList<T>(list(data));
}
}
Таким образом, вы можете использовать их в вашем коде следующим образом:
import static CollectionUtils.list;
import static CollectionUtils.newArrayList;
public class Main {
private final List<String> l1 = list("a", "b", "c");
private final List<String> l2 = newArrayList("a", "b", "c");
}
Таким образом, вы получаете относительно компактный способ создания и заполнения списков и не нужно дублировать общие объявления. Обратите внимание, что метод list
просто создает представление списка массива. Нельзя добавлять элементы в него позже (или удалять). При этом newArrayList
создает обычный объект ArrayList
.
Как отметил Йоахим Зауэр , эти полезные методы (и многие другие полезные вещи) можно найти в библиотеке Google Collections (которая сейчас является частью проекта Guava ).
-121--3926407-Мы использовали долгий опрос Джетти в течение некоторого времени и были довольно довольны этим. Мы никогда не были близки к 10K + параллельным пользователям , как было продемонстрировано разработчиками Jetty. Однако добавленные накладные расходы на 300-400 одновременных соединений Cometd на наших серверах низкого уровня были почти не заметны. В другой статье объясняется кластеризация Jetty и Cometd с помощью Terracotta (которая является еще одной удивительной частью программного обеспечения).
-121--3505009- В IE можно использовать событие onPaste
. ( Документация MSDN )
В Firefox, Safari, Opera и Chrome можно использовать событие onInput
( Dottoro.com ссылка ). Это событие возникает при изменении текстового содержимого элемента через интерфейс пользователя, включая вставку.
Я бы использовал jQuery и добавил обработчик событий для текстового поля. Когда обработчик срабатывает, подсчитайте и отреагируйте по желанию.
$("textarea").blur(function(event) {
var maxLength = 3000000;
var length = this.value.length;
if (length > maxLength) {
//reassign substring of max length to text area value
this.value = this.value.substring(0, maxLength);
alert(maxLength + ' characters allowed, excess characters trimmed');
}
});
Этот jquery прикрепляет анонимную функцию к текстовым областям, это обрезает текст и предупреждает пользователя, вы также можете прикрепить его к событию нажатия клавиши.
См .: http://viralpatel.net/blogs/2008/12/set-maxlength-of-textarea-input-using-jquery-javascript.html для получения дополнительных сведений об этом.