Замена по требованию
Добрый день, друзья!
Пытаюсь сделать замену в тексте по регулярным выражениям если стоят определённые галочки. Например, если стоит галочка «Заменить всех Вась» то в исходном тексте заменяются все Васи, а если «Заменить всех Петь», то заменяются также все Пети. В общем, подключение определённого выражения по требованию. Накропал пока вот что, но это не работает..: <form> <textarea name="input" id="input" cols="60" rows="10" placeholder="Исходный текст"></textarea> <br> <button id="proceed">Заменить</button> <button type="reset">Очистить</button> <br> <textarea name="output" id="output" cols="60" rows="10" placeholder="Результат"></textarea> </form> <form> <label for="checkbox1"> <input type="checkbox" id="checkbox1" name="checkbox">Обернуть всех Петь</label> <label for="checkbox2"> <input type="checkbox" id="checkbox2" name="checkbox">Обернуть всех Вась</label> </form> $(function() { $("#proceed").click(function(event){ event.preventDefault(); $("#input").each(function(){ $("#output").val($(this).val() if($("input:checkbox[id='checkbox1']").is(":checked")) { .replace(/Петя/g, "<a href='#'>Петя</a>"); } if($("input:checkbox[id='checkbox2']").is(":checked")) { .replace(/Вася/g, "<a href='#'>Вася</a>"); } ); }); }); }); Вот пример на jsfiddle.net Где я ошибся? Подскажите пожалуйста... |
.replace(/Петя/g, "<a href='#'>Петя</a>");
Вот тут скорей всего. То что ты вызываешь, эквивалентно .replace, вызванном в глобальном контексте и тут скорей всего выскакивает ошибка. делай concretElement.innerHTML = concretElement.innerHTML.replace(...) либо concretElement.value, в зависимости от того, что там у тебя |
snovapavel,
$(function() { $("#proceed").click(function(event) { event.preventDefault(); var val = $("#input").val(); if ($("input:checkbox[id='checkbox1']").is(":checked")) val = val.replace(/Петя/g, "<a href='#'>Петя</a>"); if ($("input:checkbox[id='checkbox2']").is(":checked")) val = val.replace(/Вася/g, "<a href='#'>Вася</a>"); $("#output").val(val) }) }); |
Кстати, вспомнился забавный факт. Есть языки, где действительно можно так сделать.
o := Object clone do( flag := true string := "foo bar baz" asMutable ) o do( if(flag, string replaceSeq("bar", "moo")) ) o string print #>>>> foo moo baz :) строки -- первоклассные муттабельные объекты + безкостыльное динамическое связывание + все есть выражение (if -- просто функция) -- одним словом Ъ-ООП, и, вуаля:) |
Огромное спасибо!
|
Часовой пояс GMT +3, время: 18:38. |