17.05.2017, 17:20
|
Профессор
|
|
Регистрация: 14.03.2010
Сообщений: 194
|
|
textarea поиск в областе нажатия курсора.
В textarea находится json код, примерно такого содержания:
Код:
|
{
"id":"test1",
"select":"dsfsdf",
"text":"dsfdsf"
},
{
"id":"test2",
"number":"22",
"text":"dsfdsf"
},
{
"id":"test3",
"select":{"ok":"no"},
"text":"dsfdsf"
} |
Когда я мышкой нажимаю допустим в строчку "number":"22",
Я хочу увидеть alert с id этого array то есть "id":"test2".
Такое возможно на JavaScript?
Последний раз редактировалось dima85, 17.05.2017 в 18:31.
|
|
17.05.2017, 17:28
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от dima85
|
Такое возможно на JavaScript?
|
да,но может проще пристрелить кого-то, чтоб не мучался?
|
|
17.05.2017, 17:44
|
Кандидат Javascript-наук
|
|
Регистрация: 21.01.2017
Сообщений: 139
|
|
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>
|
|
17.05.2017, 18:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от dima85
|
находится json код
|
а где запятые после значения id? и []
Последний раз редактировалось рони, 17.05.2017 в 18:11.
|
|
17.05.2017, 18:31
|
Профессор
|
|
Регистрация: 14.03.2010
Сообщений: 194
|
|
Извиняюсь моя синтаксическая ошибка, запятые должны быть.
|
|
17.05.2017, 19:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
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>
Последний раз редактировалось рони, 17.05.2017 в 20:00.
|
|
17.05.2017, 19:53
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
dima85,
скрипты пишут для какого-то практического применения. В данном же такого трудно уловить. Зачем это нужно, какова цель такого действия?
|
|
18.05.2017, 12:20
|
|
Профессор
|
|
Регистрация: 01.09.2011
Сообщений: 263
|
|
JSON.parse("[" + a + "]"), b = /\}\s*?,\s*?\{/g, c = 0; null != b.exec(a) && b.lastIndex < d;) c++;
alert(e[c].id)
можете пожалуйста объяснить что тут происходит?
|
|
18.05.2017, 17:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
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 блока из массива согласно получившемуся индексу
|
|
|
|