|
|
|
| Здравствуйте!
Имеется считалка, которая в опере глючит: если в текстареа ввести скопированный текст с переводом каретки в опере появляются лишние знаки... | |
|
|
|
|
|
|
|
для: vadimka
(23.05.2012 в 17:10)
| |
// Used for trimming whitespace
trimLeft = /^\s+/
trimRight = /\s+$/
// Use native String.trim function wherever possible
trim: trim ?
function( text ) {
return text == null ?
"" :
trim.call( text );
} :
// Otherwise use our own trimming functionality
function( text ) {
return text == null ?
"" :
text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
}
|
Как видите, перевод каретки jquery не удаляет, и это не зависит от браузера. | |
|
|
|
|
|
|
|
для: confirm
(23.05.2012 в 17:52)
| | я не правильно объяснил - если скопировать текст, в котором есть перевод каретки именно в опере неправильно работает счетчик... | |
|
|
|
|
|
|
|
для: vadimka
(23.05.2012 в 19:43)
| | Ну а причем тут trim? Виной переводы строки? Удаляйте их. | |
|
|
|
|
|
|
|
для: vadimka
(23.05.2012 в 19:43)
| | в каком смысле - "неправильно"?
перевод строк - это тоже символ (а иногда и два) - \n или \n\r
если не хотите их подсчитывать - сделайте изменение в функции-счётчике, пусть она эти символы не распознаёт. | |
|
|
|
|
|
|
|
для: ЯСА
(23.05.2012 в 20:31)
| | ничего не понимаю,смотрите:
так считает нормально, а вот так:
$(textarea).val().length;
|
какой-то глюк!!!! | |
|
|
|
|
|
|
|
для: vadimka
(23.05.2012 в 20:45)
| | не правильно ссылаетесь на объект в jquery. | |
|
|
|
|
|
|
|
для: confirm
(23.05.2012 в 20:49)
| | да, мне уже старшие товарищи указали, что $(textarea) - это объект в дебагге показывает, что-то вроде такого:
а как к ниму обратиться? | |
|
|
|
|
|
|
|
для: vadimka
(23.05.2012 в 20:59)
| | По id или по тегу, но заключая его в кавычки, если у вас на странице такой элемент один. | |
|
|
|
|
|
|
|
для: confirm
(23.05.2012 в 21:05)
| | можно пример кода? | |
|
|
|
|
|
|
|
для: vadimka
(24.05.2012 в 12:45)
| | сейчас такая хрень работает:
$(textarea).attr("value").length;
|
| |
|
|
|
|
|
|
|
для: vadimka
(24.05.2012 в 13:36)
| | - | |
|
|
|
|
|
|
|
для: vadimka
(24.05.2012 в 13:36)
| | Ничего удивительного, так как вы получаете значение атрибута value и "спрашиваете" его размер. Удивительно другое, что вы, после того как вам сказали, продолжаете неверно ссылаться на объект.
jQuery, это не РНР, который встретив вашу ошибку в коде, типа $var[name], "постарается" понять, что вы ошиблись, ибо такой константы среди предопределенных или объявленных вами не найдет, и "предположит", что правильно будет так - $var['name']. Но не дай бог разработчики РНР предопределят такую константу, и тогда РНР ваш баг исправлять уже не будет.
jQuery, это не какой-то особенный язык, это простая js-библиотека написанная на javascript, в котором бы можно было обратиться к объекту как:
var tag = document.getElementsByTagName('textarea');
и именно так, а не getElementsByTagName(textarea), и так:
$("textarea")
Javascript и jQuery ваши ошибки исправлять не будет. | |
|
|
|
|
|
|
|
для: confirm
(24.05.2012 в 15:28)
| | охо-хо я не писал код, а исправляю:)
function checkTextLength(textarea){
var maxLength = $(textarea).attr("maxlength");
//так считает в опере нормально:
var value = textarea.value;
а в оригинале вот так: не учитывает, при подсчете перенос каретки:
var value = $(textarea).val();
}
|
| |
|
|
|
|
|
|
|
для: vadimka
(24.05.2012 в 16:46)
| | Вы действительно не понимаете разницы между и ???? | |
|
|
|
|
|
|
|
для: Sfinks
(24.05.2012 в 17:00)
| | Вы помойму меня не правильно поняли: textarea в данном случае аргумент функции.... | |
|
|
|
|
|
|
|
для: vadimka
(24.05.2012 в 17:08)
| | А, сори, не доглядел ) Ток не понятно зачем такое имя.... Ну да ладно. | |
|
|
|
|
 3.8 Кб |
|
|
для: vadimka
(24.05.2012 в 16:46)
| |
<script type="text/javascript">
$(function(){
$("textarea").keyup(function() {
$("span").text($(this).val().length);
});
});
</script>
<textarea rows="10"></textarea>
<span></span>
|
Как видите размер учитывает и перевод каретки.
PS. Касаемо аргумента - такое только от отсутствия фантазии, "персонализированные" функции. ) | |
|
|
|
|
|
|
|
для: confirm
(24.05.2012 в 17:09)
| | у меня так:
var value = $(textarea).attr("value");
| считает нормально, но при нажатии энтера в браузерах считает один знак, а в опере - 2!
Если написать:
var value = $(textarea).val();
| энтеры вообще не считает, считает как-то неправильно (это касается только оперы)
не хочу перевод каретки игнорировать... пускай если энтер один знак, но в опере - 2 знака:) | |
|
|
|
|
 18.6 Кб |
|
|
для: vadimka
(24.05.2012 в 18:50)
| | Где здесь разный подход к размеру? В данном случае размер перевода каретки определяется системой, а не браузером. | |
|
|
|
|
|
|
|
для: confirm
(24.05.2012 в 19:05)
| | ы знаете - я не понял, не могли бы Вы объяснить мою ошибку | |
|
|
|
|
|
|
|
для: vadimka
(24.05.2012 в 19:41)
| | Для начала выполните тот код что я написал. Считает у вас тоже правильно во всех браузерах? | |
|
|
|
|
 15.7 Кб |
|
|
для: vadimka
(24.05.2012 в 19:41)
| | И где резюме результата?
Собственно без него знаю, что и ваши "личные" браузеры будут выполнять метод .val() jQuery и при этом считать размер одинаково. Да и другого быть не может.
А вот теперь не используя jQuery:
<textarea rows="10"
onkeyup="document.getElementById('s').innerHTML=this.value.length"></textarea>
<span id="s"></span>
|
Как видите Ослик и Опера показывают иной результат, нежели Лиса и отпрыск Гугла. Если же задать вопрос кто прав, то в среде Windows объективны два первых, так как в этой среде переход на новую строку, это значения (hex) 0D - возврат каретки, плюс 0A - перевод строки, итого 12 значений (в примере). | |
|
|
|
|
|
|
|
для: confirm
(25.05.2012 в 05:32)
| | Понимаете я использую коды написанные другими, и у меня ограниченные возможности для редактирования:)
Пример кода вызова функции:
onpaste="${cnt}" oninput="${cnt}" onkeypress="${cnt}" onkeyup="${cnt}" onchange="${cnt}"
|
просто в опере энтер дает два знака, в ОСТАЛЬНЫХ - один, я не могу при этом протестировать Ваш код, так как связан рамками структуры:) | |
|
|
|