- Den Benutzer auf 4 Dezimalstellen beschränken.
- Dem Benutzer erlauben, vor der Dezimalstelle einzugeben (z. B. Ziffern links einzufügen).
- Verhindern, dass sich die Benutzeroberfläche ändert automatisch während der Eingabe (ich möchte nicht, dass 12.34567 erscheint und dann gerundet wird, wenn die Eingabe den Fokus verliert).
Code: Select all
const handleKeyDown = (event) => {
const keyCode = event.charCode || event.keyCode;
const key = String(event.key);
let currentValue = event.target?.value ? String(event.target.value) : '';
if (keyCode === KEY_ESC) {
inputValue.value = '';
emits('update:modelValue', '');
return;
}
if (props.inputType === 'number' && props.isPositiveDouble) {
if (ALLOWED_KEYS.includes(key) || event.ctrlKey || event.metaKey) {
return;
}
if (key === '.' || key === ',') {
if (currentValue.includes('.') || props.decimals === 0) {
event.preventDefault();
}
return;
}
if (!isDigit(key)) {
event.preventDefault();
return;
}
preventExceedingDecimalLimit(currentValue, event);
}
};
const preventExceedingDecimalLimit = (value, event) => {
const decimalIndex = value.indexOf('.');
if (decimalIndex >= 0) {
const decimalsCount = value.length - decimalIndex - 1;
if (decimalsCount >= props.decimals) {
event.preventDefault();
}
}
};
- Wenn der Benutzer 4 Dezimalstellen erreicht, blockiert die Eingabe jegliche Eingabe, auch wenn sich der Cursor vor der Dezimalstelle befindet.
- Ich kann den Eingabetyp aufgrund anderer Einschränkungen nicht auf Text umstellen.
- Ich möchte eine Möglichkeit haben, den neuen Wert oder die Cursorposition zu erkennen, um die Eingabe vor der Dezimalstelle zu ermöglichen, aber dennoch eine Überschreitung zu verhindern 4 Dezimalstellen.
Irgendwelche Vorschläge, wie man dieses Problem in
lösen kann
Code: Select all
type="number"
Mobile version