powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jquery. Проверка вставки текста из буфера на перенос строк.
30 сообщений из 30, показаны все 2 страниц
jquery. Проверка вставки текста из буфера на перенос строк.
    #37923449
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем. У меня в буфере обмена есть 2 строки:

abc
def

Необходимо, чтобы при вставке из буфера (и только из буфера!) в текстбокс была проверка - если есть переос строк, то заменяем перенос на ";". Т.е. будет текстбокс выглядеть так:

abc;def

У меня тут есть некоторые мысли:
1)метод change для текстбокса использовать нельзя, т.к. он срабатывает, когда курсор уберу, а нужно чтобы сразу вставлялось с ";"
2)метод keypress использовть тоже нельзя, т.к. не факт, что человек будет использовать CTRL+V (он может переопределить или вставить мышкой).

Есть какие идеи - какие свойства лучше использовать?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37923493
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у кого-нибудь есть идеи?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37923504
zolitude
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Students,

делать textarea и парсить при сохранении.
пользователь такие понты (при ctrl+v) едва оценит.
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37923508
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не подходит.

Тут всё так:
Менеджер через эксель добавляет артикулы продуктов.
Он должен видеть, как скопирует из буфера, какие продукты он добавил через ";".

Так вообще можно сделать или нет?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924021
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели никто не знает каким образом такую хитрую операцию провернуть?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924043
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
$('input').bind('input propertychange', function() {
    // тут Ваш код
});​
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924053
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
$('input').bind('input propertychange', function() {
    alert('*');
});



Такой вариант не работает -даже звездочку не показывает
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924056
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каком браузере не работает?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924065
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, работает. Забыл, что вместо $ я использую jq.

Код: javascript
1.
2.
3.
jq('#txtSKU').bind('input propertychange', function () {
        alert("*");
    });
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924091
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каком браузере не работает?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924102
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
jq('#txtSKU').bind('input propertychange', function (){...});


Работает во всех браузерах.

Сейчас думаю - как проверить внутри этого метода - вставлена ли строка из буфера обмена (метод clipboardData) и есть ли переосы строк. Это самое сложное. Непонятно, как определить, т.к. перенос строки браузер понимает как пробел и вставляет с пробелом.
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924141
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут есть небольшая проблемка:
в буфере строка:

abc
def

вставляю в input:


1)IE
abc
window.clipboardData.getData('Text') работает

2)Opera
abc def (3 пробела)
window.clipboardData.getData('Text') не работает

3)Firefox, Chrome
abc def (1 пробел)
window.clipboardData.getData('Text') не работает


Если я буду сравнивать вствленную строку с данными из буфера, то будет неверно, может есть другие варианты?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924160
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может невозможно узнать - вставлен ли текст из буфера или нет?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924219
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут кто-нибудь есть?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924317
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё раз вопрос заново.

У меня в буфере обмена хранится:

abc
def


Например, в IE вставляется:
abc


Необходимо вставить
abc;def

Поэтому необходимо заменить стандартную вставку на свою:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    var paste = false;
    var text3 = "";
    jq('#txtSKU').bind('paste', function () {
        paste = true;
        var text1 = jq('#txtSKU').attr("value");
        var text2 = window.clipboardData.getData('Text');
        text3 = text1 + text2;
    });

    jq('#txtSKU').bind('input propertychange', function () {
        if (paste) {
            jq('#txtSKU').attr("value", text3);
            paste = false;
        }
    });



Прописал этот код, он работает в IE.


1)Несовсем понятно как в text2 разные строки переписать в одну и разделить их ";".
2)Несовсем понятно как отключать защиту в дугих браузерах (почитал разыне форумы, вроде это невозможно через код сделать), т.к. window.clipboardData.getData('Text') работает только в IE
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924365
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924548
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA http://jsfiddle.net/a3GUL/

да не могу я использовать textarea вместо input. Если вместо

<textarea id="input" row="1"></textarea>

будет
<input id="input" row="1">

то ничего работать не будет
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924551
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Studentsда не могу я использовать textarea вместо input.почему?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924608
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне задание дали, я не могу менять сайт, могу только скрипт дописать.
Попробуйте сами, пусть и с textarea, вставить из буфера в IE9.

Вставляется только abc.

\n def обрезается и не вставляется.

Так что $(this).val($(this).val().replace('\n', ';')); не подходит
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924638
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что нужно всё равно брать из буфера (для IE):

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
jq('#txtSKU').bind('paste', function () {
        paste = true;
        var text1 = jq('#txtSKU').attr("value");
        var text2 = window.clipboardData.getData('Text');        
        text2 = text2.replace('\n', ';');        
        text3 = text1 + text2;
    });

    jq('#txtSKU').bind('input propertychange', function () {
        if (paste) {            
            jq('#txtSKU').attr("value", text3);
            paste = false;
        }
    });



вот такой код работает в IE, но из-за строчки
window.clipboardData.getData('Text');

скрипт перестаёт работать в Opera, Chrome и FireFox.
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924647
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Studentsскрипт перестаёт работать в Opera, Chrome и FireFox.в оных нет window.clipboardData.

а Опера вообще не отлавливает "paste".

В Хроме проблема легко решаема, там clipboardData есть в составе объекта-события, пример 12079052 , но там событие надо навешивать напрямую, а не через jQuery.

Как быть с ФФ и Оперой - непонятно.
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924660
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"paste" не улавливает только опера.

Может вместе с paste можно параметр передать? это и будет текст нашего буфера?
jq('#txtSKU').bind('paste', function (e) {

});

Только не совсем понятно как его оттуда доставать. alert(e) пишет [object object]
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924701
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Studentsмне задание дали, я не могу менять сайт, могу только скрипт дописать.
Попробуйте сами, пусть и с textarea, вставить из буфера в IE9.

Вставляется только abc.

\n def обрезается и не вставляется.

Так что $(this).val($(this).val().replace('\n', ';')); не подходитПопробовал, причём во всех вариантах Browser Mode. Нормально работает.
А дописать скрипт так, чтобы он input на textarea заменил Вам тоже запрещено? :)
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924719
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не запрещено, это просто.

Но во всех браузерах input выглядит одинаково (см. картинку).
Что будет, если я его заменю на textarea? Во всех браузерах они выглядят по разному, или их как-то можно под input стилизовать?
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924806
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч, а каким именно образом нужно в chrome использовать .clipboardData? только через передаваемый параметр е?


jq('#txtSKU').bind('paste', function (e) {
e.clipboardData.getData('Text') - не будет работать в Chrome
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924820
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students, что, с CSS тоже проблема? :)
Стилизуем под input: http://jsfiddle.net/a3GUL/2/
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924831
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAStudents, что, с CSS тоже проблема? :)
Стилизуем под input: http://jsfiddle.net/a3GUL/2/


Вы прям хитрец :-) Никто и не догадается.

Я тут сделал для input, работает для всех браузеров кроме Хрома (я так и не понял как там использовать clipboardData):

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
var paste = false;
    var text3 = "";

    jq('#txtSKU').bind('paste', function () {
        paste = true;
        var text1 = jq('#txtSKU').attr("value");
        var text2 = "";
        if (jq.browser.msie) {
            text2 = window.clipboardData.getData('Text');
        }
        if (jq.browser.safari) {
            alert("*");
            text2 = window.clipboardData.getData('Text');
            alert(text2);
        }
        if (jq.browser.mozilla) {
            text2 = "";
            paste = false;
        }
        if (jq.browser.opera) {
            text2 = "";
            paste = false;
        }
        text2 = text2.replace(/\n/g, ';');
        text3 = text1 + text2;
    });

    jq('#txtSKU').bind('input propertychange', function () {
        if (paste) {
            jq('#txtSKU').attr("value", text3);
            paste = false;
        }
        else {
            jq('#txtSKU').attr("value", jq('#txtSKU').attr("value").replace(/ /g, ';'));
            jq('#txtSKU').attr("value", jq('#txtSKU').attr("value").replace(/;;/g, ';'));
        }
    });
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924939
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я, кстати, не подумал, что в IE пользователь может выделить что-то мышкой и потом вставить, заменив.

Поэтому нужно как-то проверять - что выделил пользователь в input (это можно проверить ???) и заменять, а не дописывать.
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924970
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudentsЯростный Меч, а каким именно образом нужно в chrome использовать .clipboardData? только через передаваемый параметр е?


jq('#txtSKU').bind('paste', function (e) {
e.clipboardData.getData('Text') - не будет работать в Chromee.clipboardData работает, если навесить событие не через jQuery, а непосредственно элементу.

А если через jQuery, то e.originalEvent .clipboardData
(поскольку в этом случае у нас обертка над объектом event)

вот так в Хроме делается:
Код: javascript
1.
2.
3.
4.
var str = e.originalEvent.clipboardData.getData('text/plain');
if (str) {
	/* вставляется текст */
}
...
Рейтинг: 0 / 0
jquery. Проверка вставки текста из буфера на перенос строк.
    #37924996
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ясно, спасибо. Буду знать.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jquery. Проверка вставки текста из буфера на перенос строк.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]