В настоящее время единственными элементами, которые позволяют безопасно выбирать текст, являются:
, как описано в: whatwg: selectionStart attribute .
Вы можете также прочитайте документацию для интерфейса HTMLInputElement , чтобы более подробно рассмотреть элементы ввода.
Чтобы преодолеть эту «проблему» безопасно, на данный момент лучше всего работать с и примените маску / ограничение, которые принимают только числа. Существует ряд плагинов, которые удовлетворяют требованиям:
Здесь вы можете увидеть живое демо одного из предыдущих плагинов:
Если вы хотите безопасно использовать selectionStart
, вы можете проверить те элементы, которые его поддерживают (см. атрибуты типа входа )
// Fix: failed to read the 'selectionStart' property from 'HTMLInputElement'
// The @fn parameter provides a callback to execute additional code
var _fixSelection = (function() {
var _SELECTABLE_TYPES = /text|password|search|tel|url/;
return function fixSelection (dom, fn) {
var validType = _SELECTABLE_TYPES.test(dom.type),
selection = {
start: validType ? dom.selectionStart : 0,
end: validType ? dom.selectionEnd : 0
};
if (validType && fn instanceof Function) fn(dom);
return selection;
};
}());
// Gets the current position of the cursor in the @dom element
function getCaretPosition (dom) {
var selection, sel;
if ('selectionStart' in dom) {
return _fixSelection(dom).start;
} else { // IE below version 9
selection = document.selection;
if (selection) {
sel = selection.createRange();
sel.moveStart('character', -dom.value.length);
return sel.text.length;
}
}
return -1;
}
// If the DOM element does not support `selectionStart`,
// the returned object sets its properties to -1.
var box = document.getElementById("price"),
pos = getCaretPosition(box);
console.log("position: ", pos);
Вышеприведенный пример можно найти здесь: jsu.fnGetCaretPosition ()
Возможно, поле изменилось на значение по умолчанию: вы можете отредактировать правое поле, нажав ctrl + alt + s (чтобы перейти к настройкам) и найти правильный запас. Затем перейдите в Code Style -> Java -> Wrapping and Braces -> Right Margin (столбцы). Увеличьте длинные строки кода. Существуют также настраиваемые настройки для настройки того, что делать с lambas (сохранить при переформатировании)