2012-02-14 2 views
1

Предположим, у нас есть поле ввода: <input type="text" id="id0"/>. Я хотел бы динамически заменить текущий текст текста текстом. Каков наилучший способ достичь этого с помощью jQuery или javascript?JavaScript/jQuery - заменить текст во входном тексте

Update:

Я имел в виду: пользователь вводит текст и выбирает его часть, а затем нажимает на кнопку, чтобы заменить выбранный раздел с другим указанным текстом.

С уважением, Rafal

+0

так, вам нужно выбрать какой-нибудь текст и узнать WHA t, то есть - заменить его другим текстом ... в поле ввода? –

+0

когда и к какому тексту вы хотите заменить? любое событие должно быть вызвано? было бы полезно, если бы я получил код html и js – run

+0

Вы заменяете кнопку нажимаете или что-то еще? Как он узнает, когда нужно заменить? –

ответ

1

Большинство поддерживающих браузер selectionStart и selectionEnd объектов на текстовых вводах и в текстовом поле. Однако IE < 9 нет. Вы можете использовать мой Rangy inputs plug-in для этого, что нормализует беспорядок IE < 9 отсутствие поддержки и предоставляет удобные методы для работы с выборами в текстовых вводах и текстовых областях. С его помощью, то код будет:

$("#id0").replaceSelectedText("SOME NEW TEXT"); 

Если текстовое поле не имеет фокуса, вы должны будете фокусировать его первым:

$("#id0").focus(); 
+0

Этот плагин использует 'document.execCommand ('insertText')' для замены содержимого (что хорошо, так как оно правильно поддерживает механизм отмены браузеров), но это не работает в IE11. – flu

+0

@flu: Да, я знаю. Для IE есть резерв. Однако это означает, что в IE отключен стек отмены. –

+0

Вы правы. Я вот-вот открою билет для этой ошибки. – flu

0
$('#id0').val('somenewtexthere'); 
+0

Майк, я бы хотел динамически заменить текущий выбор, а не все входное значение. – rafalry

0

Я не уверен, если это поможет, но, может быть, таким образом:.

var myMessage="My Text"; 
    $('#id0').val(myMessage); 
-3

JQuery ("вход # ID0") атр ("значение" , "мой текст");

+0

-1 из-за использования jQuery вместо сокращения + с использованием .attr(), потому что есть функция, которая обеспечивает больше функциональности .val() будет правильным способом. –

+0

Есть некоторые рамки, где вам нужно использовать jQuery вместо $, и я использовал другую версию (attr), потому что был кто-то другой, который дал ответ с val. Мой ответ был прав и не ошибся. Я думаю, вы были скупы, давая мне -1, я пытался помочь здесь. – DiAngelo

+0

Использование .attr() не подходит для этого. Смотрите здесь почему: http://stackoverflow.com/a/3843317/851498. Это приведет к тому, что, например, некоторые значения формы будут ** не изменяться ** при отправке (attr() изменяет какое-либо свойство jQuery, а val() изменяет значение элемента DOM). Меня не интересует 'jQuery' :). –

0

Если вы хотите, чтобы очистить его, когда вы набираете и возвращает его текст, когда уезжаю использовать этот

$('#id0').focus(function() { $(this).val(''); });

$('#id0').blur(function() {$(this).val(' Your text '); }); 
Смежные вопросы