/ / Получете и задайте позицията на курсора в javascript - javascript, cursor

Получете и задайте позицията на курсора в javascript - javascript, курсора

Надявам се някой да ми помогне.

Трябва да създам функция, която записва в aпроменям позицията на курсора в моята textarea или позицията на селекцията (ако е възможно) или ако курсорът не е в textarea, което ми спестява стойността на null.

Най-накрая трябва да осъзная друга функция, която (използвайки стойностите по-горе) ми отговаря на предходната ситуация.

Знаете ли дали това е възможно?

Отговори:

0 за отговор № 1

Ако използвате "шаблон", това е доста лесно (въпреки че частта от въпроса "отговори ми" е малко неясна).

Предоставям прост пример, използвайки "Smarty", който симулира текстовата област "Редактиране" с бутон "Запазване", когато се натисне, изпраща текстовата зона заедно с позицията на курсора.

Когато textarea се зарежда отново, той получава стойността и задава позицията на курсора, където е била. Започва от HTML / шаблон:

<!--
Form with textarea, save button and hidden input, simulating an "Edit" UI.
-->
<form method="post">
<textarea id="textarea" rows="12" cols="40" autofocus>
one
two
three
and

some

more...
</textarea><br>
<button onclick="setpos()">save</button>
<input type="hidden" id="pos" name="pos" value="0">
</form>
<script>
// The template code places the hidden input"s value into the the following
// variable; then, if non-zero, sets the texarea"s cursor posotion to it.
var p = "{$POS}";
if (p) document.getElementById("textarea").setSelectionRange(p,p);
// Set the input"s value to the cursor position.
function setpos() {
var p = document.getElementById("textarea").selectionStart;
document.getElementById("pos").value = p;
}
</script>

И PHP кодът е толкова прост:

<?php
// Set input if not set (the first run).
!isset($_POST["pos"]) and $_POST["pos"] = "0";
// Load the template engine (from the "demo" directory).
require "../libs/Smarty.class.php";
$smarty = new Smarty;
// Assign the input for use by template:
$smarty->assign("POS",$_POST["pos"]);
// Display the form:
$smarty->display("pos.tpl");

Разбира се, ако нямате / искате Smarty (или PHP!), Добавете малко повече за вашия код.

Но това показва основния принцип за получаване и задаване на позицията на курсора в текстово пространство.