01.10.2018, 09:49
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Ввод текста в определенное место input
Добрый день. Есть input, текст в который вводится из события click:
<input id="keyboard-input" type="text">
<button type="button" class="key-button-new">1</button>
<button type="button" class="key-button-new">2</button>
<button type="button" class="key-button-new">3</button>
<script>
$('.key-button-new').click(function(){
var key = $(this).html();
$("#keyboard-input").focus().val(function(i, val) {
return val + key;
});
});
</script>
Подскажите пожалуйста как вводить в input туда, куда ткнули мышкой?
Например ввели слово, а там ошибка, ткнули в место ошибки и исправили с события click.
|
|
01.10.2018, 10:36
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Местоположение курсора нашел, а вот как заставить его туда писать, не знаю:
$('.key-button-new').click(function(){
var key = $(this).html();
$("#keyboard-input").focus().val(function(i, val) {
var cursor = val.slice(0, this.selectionStart).length;//место курсора в input
console.log(cursor);
return val + key;
});
});
|
|
01.10.2018, 10:53
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от Artur_Hopf
|
как вводить в input туда, куда ткнули мышкой?
|
Инпут сам по себе так и работает.
<input id="keyboard-input" type="text">
Сообщение от Artur_Hopf
|
Например ввели слово, а там ошибка, ткнули в место ошибки и исправили с события click.
|
Кто знает про ошибку? Скрипт или человек? Скрипт может заменить неправильное слово целиком.
Человек может исправить - смотри выше.
Непонятна проблема.
И скрипт в пост 1 непонятный - что он делает и зачем?
Последний раз редактировалось Dilettante_Pro, 01.10.2018 в 11:01.
|
|
01.10.2018, 11:00
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Dilettante_Pro,
Я о том чтобы вводит с кнопки тыкая мышкой, допустим нет клавиатуры. А ошибка это человек, написал случайной прэвед, надо исправить э, ткнул мышкой туда, 2 символ и исправил. Так вот как отследить и исправить, я пока дошел до этого, но не работает:
$('.key-button-new').click(function(){
var key = $(this).html();
$("#keyboard-input").focus().val(function(i, val) {
var cursor = val.slice(0, this.selectionStart).length;
console.log(cursor);
return val.splice(cursor, 0, key);
//return val + key;
});
});
|
|
01.10.2018, 11:08
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Вот как это сейчас работает:
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<input id="keyboard-input" type="text">
<button type="button" class="key-button-new" >1</button>
<button type="button" class="key-button-new" >2</button>
<button type="button" class="key-button-new" >3</button>
<button type="button" class="key-button-new" >4</button>
<button type="button" class="key-button-new" >5</button>
<button type="button" class="key-button-new" >6</button>
<button type="button" class="key-button-new" >7</button>
<button type="button" class="key-button-new" >del</button>
<br>
<div>Положение текста я отследил, а как вставить не знаю:<div id="text"></div></div>
<script>
$('.key-button-new').click(function(){
var key = $(this).html();
$("#keyboard-input").focus().val(function(i, val) {
var cursor = val.slice(0, this.selectionStart).length;
$("#text").html(cursor);
if(key == 'del'){
return val.substr(0, val.length - 1);
}else{
return val + key;
};
});
});
</script>
То есть если я тыкну мышкой в центр текста, а потом нажму на кнопки, новый текст вставится в конец введенного текста.
Как сделать так чтобы текст вводился там где курсор, с кнопок (button)?
Последний раз редактировалось Artur_Hopf, 01.10.2018 в 11:13.
|
|
01.10.2018, 11:21
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Вставить можно так
<input id="keyboard-input" type="text">
<button type="button" class="key-button-new">1</button>
<button type="button" class="key-button-new">2</button>
<button type="button" class="key-button-new">3</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$('.key-button-new').click(function(){
var key = $(this).html();
$("#keyboard-input").focus().val(function(i, val) {
var begin = val.slice(0, this.selectionStart);
var end = val.slice( this.selectionStart, val.length );
console.log(begin + " " + end);
return begin + key + end;
});
});
</script>
|
|
01.10.2018, 11:24
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
Dilettante_Pro,
Спасибо большое, а чтоб курсор потом там же остался?
|
|
01.10.2018, 11:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Вставка символа в место отмеченное курсором
Artur_Hopf,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$('.key-button-new').click(function(){
var key = this.innerHTML;
var target = document.querySelector("#keyboard-input"),
text = target.value,
caretPos = target.selectionStart,
caretPosEnd = target.selectionEnd;
target.value = text.substr(0, caretPos) + key + text.substr(caretPosEnd);
caretPos += key.length;
target.focus();
target.setSelectionRange(caretPos, caretPos)
});
});
</script>
</head>
<body>
<input id="keyboard-input" type="text">
<button type="button" class="key-button-new">1</button>
<button type="button" class="key-button-new">2</button>
<button type="button" class="key-button-new">3</button>
</body>
</html>
|
|
01.10.2018, 11:29
|
Профессор
|
|
Регистрация: 13.03.2018
Сообщений: 278
|
|
рони,
Спасибо, буду разбираться как это работает
|
|
|
|