LINUX.ORG.RU
решено ФорумTalks

Инкремент/декремент значения текстового поля мышкой

 , , ,


0

1

Кароче заполнял я тут в браузере несколько раз форму, заполнял, отправлял, нажимал «назад», все поля должны были остаться заполненными, мне надо было только в одном поле изменить численное значение.

Проблема в том, что это текстовое поле, которое может содержать произвольный текст, но в том конкретном случае текст был вида: «ааа123член», надо, чтобы стало: «ааа143член». И чтобы изменить один символ надо отставлять пиво и тянуться к клавиатуре.

И посетила меня мысль, а можно же сделать расширение для хромиума, которое при наведении курсора на символ чекало, цифра ли это, показывала кнопочки вверх/вниз и можно было на них жмакать, ну или колёсиком изменять значение, а при убирании курсора с цифры значок бы пропадал и пропадала возможность редактировать мышкой.

Как вам идея? Было бы кому-то такое полезно?

☆☆☆☆☆

Последнее исправление: DELIRIUM (всего исправлений: 1)

Как вам идея?

Ты изобрёл On-screen Keyboard! Поздравляю, это отличное изобретение!

Было бы кому-то такое полезно?

Да, экранная клавиатура это очень полезная штука. Тут уже без шуток.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Не, экранная клавиатура - это просто клавиатура, а тут детект типа символа. И в ней целая клавиатура, которая дохрена места занимает, а тут маленький значок, который ещё и сам пропадает.

DELIRIUM ☆☆☆☆☆
() автор топика
Последнее исправление: DELIRIUM (всего исправлений: 1)

И посетила меня мысль, а можно же сделать расширение для хромиума, которое при наведении курсора на символ чекало, цифра ли это, показывала кнопочки вверх/вниз и можно было на них жмакать, ну или колёсиком изменять значение, а при убирании курсора с цифры значок бы пропадал и пропадала возможность редактировать мышкой

Если брать выделение вместо наведения, то можно довольно-таки быстро написать юзерскрипт, который сможет это делать.

Как вам идея? Было бы кому-то такое полезно?

Нет.

theNamelessOne ★★★★★
()
Ответ на: комментарий от NeXTSTEP

Это просто пример того, что позволяет ввести член

DELIRIUM ☆☆☆☆☆
() автор топика
Ответ на: комментарий от DELIRIUM

Вот тебе готовый юзерскрипт

// ==UserScript==
// @name        Numbers Increment/Decrement
// @namespace   Violentmonkey Scripts
// @match       <all_urls>
// @grant       none
// @run-at document-end
// @version     1.0
// ==/UserScript==

const isTextInput = node => 
  node.nodeName === 'TEXTAREA' || (node.nodeName === 'INPUT' && node.type === 'text')

const hasSelection = ({ selectionStart, selectionEnd }) => selectionStart !== selectionEnd

const selectedNumber = (element) => {
  const { selectionStart, selectionEnd } = element
  const maybeNumber = Number.parseInt(element.value.slice(selectionStart, selectionEnd), 10)
  
  return Number.isNaN(maybeNumber) ? undefined : maybeNumber
}

const changeNumber = (element, delta) => {
  const newNumber = selectedNumber(element) + delta
  const { selectionStart, selectionEnd } = element
  
  element.setRangeText(newNumber.toString(), selectionStart, selectionEnd)
}

let elementWithSelectedNumber = null

document.addEventListener('mouseup', ({ target: element }) => {
  if (isTextInput(element) && hasSelection(element) && selectedNumber(element) !== undefined) {
    elementWithSelectedNumber = element
  } else {
    elementWithSelectedNumber = null
  }
})

document.addEventListener('wheel', (event) => {
  if (!elementWithSelectedNumber) {
    return
  }
  
  event.preventDefault()
  
  changeNumber(elementWithSelectedNumber, event.deltaY < 0 ? -1 : 1)
})

Как работает:

  • выделяешь в каком-нибудь поле ввода число мышкой;
  • крутишь колесо мыши вверх - число уменьшается, крутишь колесо вниз - увеличивается;
  • чтобы закончить, щелкни мышью куда-нибудь или выдели не текст.

Проверял в FF с ViolentMonkey, возможны мелкие баги.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.