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, время: 23:34. |