3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
為了驗(yàn)證輸入,您應(yīng)該監(jiān)聽keyup事件并檢查輸入的值以及按下的鍵。
const main = () => {
$('#percentage').bind({
focusin: onFocusIn,
keyup: onChange
});
};
const onFocusIn = (e) => {
const $target = $(e.currentTarget);
$target.data('val', $target.val());
};
const onChange = (e) => {
const regex = /^((100)|(\d{1,2}(\.\d*)?))%?$/,
$target = $(e.currentTarget),
value = $target.val(),
event = e || window.event,
keyCode = event.keyCode || event.which,
isValid = value.trim().length === 0 ||
(keyInRange(keyCode) && regex.test(value));
if (!isValid) {
$target.val($target.data('val'));
event.preventDefault();
} else {
$target.data('val', value);
}
};
const keyInRange = (keyCode) =>
(keyCode >= 48 && keyCode <= 57) || /* top row numbers */
(keyCode >= 96 && keyCode <= 105) || /* keypad numbers */
(keyCode === 110 || keyCode === 190) || /* decimal separator */
(keyCode === 53) || /* percentage */
(keyCode === 8 || keyCode === 46); /* back-space and delete */
main();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="percentage">
Percentage:
<input type="text" id="percentage" placeholder="99.99%" />
</label>

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
我假設(shè)您正在尋找簡(jiǎn)單的方法來(lái)進(jìn)行價(jià)值檢查并擱置事件。我收集您需要檢查值是否有%符號(hào),其次除了%符號(hào)之外的值是否是小數(shù)值的數(shù)量?,F(xiàn)在,這本身就是兩個(gè)條件。
條件一檢查
if (!n.includes("%")||n.split('.').length > 2){return;}
它是正則表達(dá)式的短路替代品,用于檢查字符串是否包含您需要在其中出現(xiàn)的值。if 它不只是返回函數(shù)。最重要的是,它還快速檢查字符串僅包含單個(gè) . 我們不希望有人達(dá)到 5.5.5.5.5%。if 它不只是返回函數(shù)。5% 可以,5.5% 也可以。
一旦出現(xiàn) % 符號(hào)性別歧視,則從值中刪除 % 符號(hào)。
完成后,進(jìn)行簡(jiǎn)單的檢查,Math.ceil(parseFloat(x))它所做的就是將值四舍五入。如果返回?cái)?shù)字wala,它起作用了,我剛剛創(chuàng)建了一個(gè)警報(bào),您可以從那里做任何您想做的事情。
function check(n){
if (!n.includes("%")||n.split('.').length > 2){return;}
x = n.replace("%", "");
if(Math.ceil(parseFloat(x))) {console.log(x); }
}
<input type="text" id="percentage" onblur="check(this.value)" />

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
您需要檢查文本框的值#percentage
,而不僅僅是最后按下的鍵。
所以: if (!regex.test($('#percentage').value())) {
或類似的規(guī)定
添加回答
舉報(bào)