textarea поиск в областе нажатия курсора.
В textarea находится json код, примерно такого содержания:
Код:
{Я хочу увидеть alert с id этого array то есть "id":"test2". Такое возможно на JavaScript? |
Цитата:
|
dima85,
по клику на textarea считывать свойство selectionStart (позиция курсора в textarea)
<textarea id="foo" rows="5">клик
по
любой
строчке</textarea>
<script>
document.getElementById("foo").onmouseup = function () {
var p1 = this.value.slice(0, this.selectionStart).split("\n"),
p2 = this.value.slice(this.selectionStart).split("\n");
alert( p1[p1.length - 1] + p2[0] );
};
</script>
|
Цитата:
|
Извиняюсь моя синтаксическая ошибка, запятые должны быть.
|
dima85,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
</head>
<body>
<textarea id="foo" rows="25">
{
"id":"test1",
"select":"dsfsdf",
"text":"dsfdsf"
},
{
"id":"test2",
"number":"22",
"text":"dsfdsf"
},
{
"id":"test3",
"select":{"ok":"no"},
"text":"dsfdsf"
}
</textarea>
<script>
document.getElementById("foo").onmouseup = function() {
var a = this.value,
d = this.selectionStart,
b = a.indexOf("{"),
c = a.lastIndexOf("}");
if (!(d < b || d > c)) {
for (var a = this.value, e = JSON.parse("[" + a + "]"), b = /\}\s*?,\s*?\{/g, c = 0; null != b.exec(a) && b.lastIndex < d;) c++;
alert(e[c].id)
}
};
</script>
</body>
</html>
|
dima85,
скрипты пишут для какого-то практического применения. В данном же такого трудно уловить. Зачем это нужно, какова цель такого действия? |
JSON.parse("[" + a + "]"), b = /\}\s*?,\s*?\{/g, c = 0; null != b.exec(a) && b.lastIndex < d;) c++;
alert(e[c].id)
можете пожалуйста объяснить что тут происходит? |
Duda.Ml1986@gmail.com,
e = JSON.parse("[" + a + "]"), //сделать из текста массив
b = /\}\s*?,\s*?\{/g, //RegExp для поиска в тексте мест разделени блоков },{
c = 0;//индекс массива
null != b.exec(a) && b.lastIndex < d;) //пока в тексте находятся },{ и индекс последней находки меньше индекса клика
c++;// увеличиваем индекс
alert(e[c].id) //показываем id блока из массива согласно получившемуся индексу
|
| Часовой пояс GMT +3, время: 00:58. |