#javascript #validation
#javascript #проверка
Вопрос:
Я использую этот скрипт:
let validate = function(e) {
let t = e.value;
e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) t.substr(t.indexOf("."), 4)) : t;
}
И, честно говоря, я понимаю, что в первой части говорится, что нам нужно число или 0, не уверен на 100%, что такое вторая часть, но третья часть ограничивается 3 знаками после запятой. Но я также хотел бы добавить предложение о том, что число выше 150 также не может быть добавлено (но может иметь 149,999). Возможно ли это с помощью этого?
Если бы я хотел иметь разные проверки для 7 разных входных данных (например, некоторые могут иметь числа до 10, тогда как другие могут иметь числа только меньше 1, а другие до 150). Должен ли я создавать отдельную проверку для каждого из этих входных данных или я могу как-то прикрепить их сюда через их #ID?
Комментарии:
1.
e.value = Math.min(e.value, 150)
;
Ответ №1:
e
кажется, ввод. Итак, у вас разные возможности
-
имейте фиксированный набор правил для каждого из ваших входных данных в функции проверки
function validate(e) { switch (e.id) { case "input_1": //do validiations for input 1 break; case "input_2": //do validation for input 2 break; default: //no rules for all others break; } }
-
создайте более общий подход с набором возможных ограничений
<input type="number" data-maxvalue="150"/> <input type="number" data-maxdigits="3"/> <input type="number" data-minvalue="5" data-maxvalue="10"/> function validate(e) { if (e.dataset.minvalue amp;amp; (e.value) < (e.dataset.minvalue)) { e.value = (e.dataset.minvalue) } if (e.dataset.maxvalue amp;amp; (e.value) > (e.dataset.maxvalue)) { e.value = (e.dataset.maxvalue) } if (e.dataset.maxdigits) { var t = e.value; e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) t.substr(t.indexOf("."), (e.dataset.maxdigits) 1)) : t; } ... }
-
Используйте встроенную проверку формы, которая может охватывать ваши варианты использованияhttps://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation
<input type="number" required max="150" min="10" step="0.001">
Комментарии:
1. Я поддерживаю этот ответ, в частности, 3-ю возможность, поскольку при этом используется встроенная проверка.
2. Определенно второй ответ! Я собираюсь попробовать это позже сегодня. Третье неэффективно, потому что у меня type=»text», потому что number где-то выдал ошибки (я не могу вспомнить, где, но это было). Спасибо, я дам вам знать, как это происходит, когда я попытаюсь, а затем выберите это в качестве ответа, если это сработает 🙂
3. @PaulDavis Если вы ожидаете, что на ваших входных данных будут цифры, вам следует окончательно попробовать использовать
type="number"
. Если вам нужно использоватьtype="text"
, хотя на самом деле это число, вам следует изучить эту проблему. Возможно, у вас проблема с вашими данными…4. Я не могу вспомнить, в чем была проблема сейчас, я попытаюсь вернуть ее обратно в number, возможно, я исправил проблему где-то по ходу. Я попробую
5. Я пытаюсь в JSBin — все это работает, кроме максимальных цифр jsbin.com/wulocav/edit?html ,js, вывод
Ответ №2:
Вы определенно можете добавить еще одну строку кода в функцию проверки, чтобы проверить, превышает ли значение 150, и зафиксировать его:
if (e.value > 150)
e.value = 150;
Я не знаю, как вы вызываете функцию validate, но максимальное значение может быть установлено с использованием второго аргумента функции ( let validate = function(e, max)
).
Комментарии:
1. Использование oninput=»validate(this)»