Удаление фраз из строки
Приветствую!
Имеется такая строка. <input type="hidden" name="g" value="'ab','b','c','dz'"> По определенному нажатию , например на ссылку <a href=".." data-g='dz' id="abc">link</a> удаляется соответствующий символ (фраза), пытался делать таким способом
$('#abc').live('click',function(){
var _g = $('input[name=g]').val();
var g = this.getAttribute('data-g');
var g = ',\''+g+'\'';
var __g_field = new RegExp('(^|\\s+)' + g+ '(?=\\s+|$)', 'gi');
var _g = _g.replace(__g_field,'');
$('input[name=g]').val(_g);
})
В каком моменте ошибся? Так же еще вопрос, если value содержит одно значение, то есть без запятых, как это определить ? |
Цитата:
Цитата:
Как вариант... var str="'ab','b','c','dz'"; alert(str.replace(/,?'dz'/,'')); |
Цитата:
<script src="http://code.internetrange.com/jquery-1.7.1.min.js"></script>
<script>
$('#abc').live('click',function(){
var _g = $('input[name=g]').val();
var g = this.getAttribute('data-g');
var g = ',\''+g+'\'';
var __g_field = new RegExp('(^|\\s+)' + g+ '(?=\\s+|$)', 'gi');
var _g = _g.replace(__g_field,'');
$('input[name=g]').val(_g);
})
</script>
<input type="text" name="g" value="'ab','b','c','dz'">
<a href="#" data-g='dz' id="abc">link</a>
Цитата:
|
1. Прощу всего засплитить (split) строку в массив.
2. Найти и удалить нужный элемент массива 3. Собрать (join) строку обратно.
<span id="result">'abc','dbf','fsdf','4444','fsdfdsf'</span><br />
<input type="button" value="Удалить 'fsdf'">
<script>
var button = document.getElementsByTagName('input')[0],
result = document.getElementById('result');
button.addEventListener('click', function () {
var value = result.innerHTML,
array = value.split(','),
index = array.indexOf("'fsdf'");
if (index > -1) {
array.splice(index, 1);
result.innerHTML = array.join(',');
}
}, true);
</script>
|
WorM32,
Решил попробовать ваш пример и все заработало! Премного благодарен. |
Цитата:
<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
$('#abc').click(function(){
var str = $('input[name=g]').val();
var rg = this.getAttribute('data-g');
rg = new RegExp(",?'"+rg+"'", 'gi');
$('input[name=g]').val(str.replace(rg,''));
})
});
</script>
</head>
<body>
<input type="text" name="g" value="'ab','b','c','dz'">
<a href="#" data-g='dz' id="abc">link</a>
</body>
</html>
</html>
|
Цитата:
|
WorM32, я для интереса потестил на
http://jspeed.yanzigitov.ru/ Код 1
var value = "'abc','dbf','fsdf','4444','fsdfdsf'",
array = value.split(','),
index = array.indexOf("'fsdf'");
if (index > -1) {
array.splice(index, 1);
var str = array.join(',');
}
Результат (больше - лучше): ≈ 735 121 выполнений/1000 мс Код 2 var str="'abc','dbf','fsdf','4444','fsdfdsf'"; str=str.replace(/,?'fsdfdsf'/gi,''); Результат (больше - лучше): ≈ 1 304 203 выполнений/1000 мс |
ksa,
Ну, во-первых, данный тест ничего не доказывает. Он лишь показывает, что второй код для данной строки будет работать быстрее, чем первый. Если взять другую строку( например, в 100 раз длиннее текущей) результат может быть совершенно противоположным. Во-вторых, я не говорил, что мой код это будет максимально быстрое решение (чего не могу сказать и о вашем решении), я лишь сказал, что он проще для понимания. |
Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 15:03. |