Замена частей текста в текстовом поле
Здравствуйте, помогите пожалуйста найти / сделать скрипт, который будет заменять определённые части строки в input поле ввода, например я ввёл в текстовое поле "plugin.dll" после чего скрипт сразу же заменил .dll на .so чтобы в итоге получилось "plugin.so", буду очень благодарен за помощь :)
|
Цитата:
function replace_string(txt, cut_str, paste_str) { var f=0; var ht=""; ht = ht + txt; f=ht.indexOf(cut_str); while (f!=-1) { //цикл для вырезания всех имеющихся подстрок f=ht.indexOf(cut_str); if (f>0) { ht = ht.substr(0,f) + paste_str + ht.substr(f+cut_str.length); } } return ht; } где txt - строка, cut_str - что заменять, paste_str - на что заменять... |
<script type="text/javascript"> function RepINP(a){ //Что, на что меняем var Ch = 'plugin.dll',My = 'plugin.so'; a.value = a.value.replace(Ch,My) } </script> <form> <input id=InpFrm1 type=text name="plugin" onchange="RepINP(this)" autocomplete="off"/> </form> |
Deff, извините, но это немного не то, надо заменять только .dll, а не всю строку.
|
Vetall,
Вроде полный код - ткните Запустить |
Цитата:
|
<script type='text/javascript'> function replace(zam,zam2){ txt = document.getElementById('text').value; txt = txt.replace(zam,zam2); document.getElementById('text').value = txt } </script> <input type='text' id='text' onkeydown='replace(".dll",".so")' onfocus='replace(".dll",".so")' onblur='replace(".dll",".so")'> я бы так сделал zam - это то что заменяется, zam2 - на что заменяется |
Deff,
твой вариант не будет заменять множественное вхождение текста: var Ch = 'plugin.dll',My = 'plugin.so'; alert( "tratata plugin.dll, param plugin.dll".replace(Ch,My) );тогда уж лучше делать так: var Ch = 'plugin.dll',My = 'plugin.so'; alert( "tratata plugin.dll, param plugin.dll".replace( new RegExp( Ch, "g" ), My) ); Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Dim@,
это только потому что замена происходит за несколько проходов. Тоесть первое меняет при фокусе, второе при блюре, третье при кейдовне... но если одно событие будет.. то будет заменено лишь одно. попробуйте вставить такую строку: tratata plugin.dll, param plugin.dll tratata plugin.dll, param plugin.dll tratata plugin.dll, param plugin.dllи увидите как она не сразу вся замениться. |
Цитата:
|
Цитата:
|
<script type='text/javascript'> function replace(zam,zam2){ txt = document.getElementById('text').value; zam = new RegExp(zam,'g','i') txt = txt.replace(zam,zam2); document.getElementById('text').value = txt } </script> <input type='text' id='text' onkeydown='replace(".dll",".so")' onfocus='replace(".dll",".so")' onblur='replace(".dll",".so")'> devote Можно так=) |
Dim@,
Ксать вот так мон объединять <input type='text' id='text' onkeydown=onfocus=onblur='replace(".dll",".so")'> ================================== Vetall, Напишите Пару сложных Вариаций вводимой строки и вид замененённой |
Спасибо, но столкнулся с ещё одной проблемой, если в текстовое поле вписать несколько значений (через пробел), например plugin1.dll plugin2.dll и т.д. заменяется только первое значение, можно ли заменять сразу все значения?
воспользовался этим вариантом: <script type="text/javascript"> function RepINP(a){ var Ch = ".dll", My = ".so"; a.value = a.value.replace(Ch, My) } </script> |
<script type="text/javascript"> function RepINP(a){ var Ch = ".dll", My = ".so"; a.value = a.value.replace(eval("/"+Ch+"/g"), My) } </script> <form> <input id=InpFrm1 type=text name="plugin" onchange="RepINP(this)" autocomplete="off"/> </form> |
Deff,
спасибо не знал об этом |
Deff, Спасибо)
|
Vetall,
мой тоже все заменяет=) |
Dim@, просто Deff ранее ответил, вот я и взял его вариант за основу :)
|
Vetall,
ну ладно |
Цитата:
|
Цитата:
indexOf('lala');и /lala/.test();то конечно рега будет медленнее.. Но не забывайте что еще нужно выполнить другие действия, замена и т.д. И при сложных манипуляциях со строкой, рега ничем не уступает обычным методам. А порой и обходит по скорости. Я тестировал их, когда писал свой движок селекторов, увы но рега оказалась быстрее для мои требований. |
devote,
ясно, просто кто-то здесь говорил, что их в проекте лучше вообще не использовать, мол памяти драть много будут или что-то в этом роде |
Проще воспользоваться готовым плагином для firefox
|
Доброго времени суток ребят) Назрел такой вопросец:
Когда кликаешь 2 раза по полю инпут появляется запомненный список введенных символов в это поле. Так вот как сделать так чтобы при выборе из этого списка к примеру Богдан: в поле инпут автоматически убирался знак двоеточия. И запретить ввод его вообще в это поле. Пример картинка: ![]() Заранее буду очень благодарен за помощь! |
oninput="this.value = this.value.replace(/:/g,'')" |
Aetae,
такой способ ему не даст вводить символы в середине текста. |
Aetae, Спасибо большое этот вариант работает как часы)
|
devote, Мне нужно чтоб просто этого символа двоеточия не было на конце выбранного Имени получателя!
А, вообще да заметил такую вещь когда что нить добавляю к Имени до последнего символа то после вставки одного символа сразу переводит к последнему. |
devote, zoOmer:
oninput="var re=/:*\s*$/; if(re.test(this.value)) this.value = this.value.replace(re,'');":) |
Почему не сделать просто так хД
function l(){ var tex="plugin.dll sdf sfsdfsdf sp.dll asd "; tex=tex.replace(/dll/g,"ol") alert(tex); } <input type="button" OnClick="l()"> |
Часовой пояс GMT +3, время: 12:34. |