如何只允许使用javascript输入0到30之间的数字或A,D字符输入?

Kar*_*rma 5 html javascript jquery

嗨我创建了一个javascript函数,只允许0到30之间的数字和字符A和D.如果它与条件不匹配,我会发出警报但如果用户在警报上单击确定,则值仍然保留在输入中并且可以在数据库中更新.我希望用户不应该在输入框中输入任何东西,除了字符A,D和0到30之间的数字,就像在输入类型=数字的情况下我们只能输入数字一样.我的javascript函数是: -

function validate() {
    var regex = /[ad0-9]/gi;
    var txt = document.getElementById('txt').value;
    var valid = true;
    var error = '';
    if (regex.test(txt)) {
        if (!isNaN(txt)) {
            if (!(parseInt(txt) >= 0 && parseInt(txt) <= 30)) {
                valid = false;
                error = 'Please enter between 0 to 30.'
            }
        }
    }
    else {
        valid = false;
        error = 'Please enter between 0 to 30, A or D'
    }

    if (!valid) {
        alert(error);
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript在验证时工作正常,但在警告值中单击确定后仍然保留在那里,当输入框为空时它也会出现错误以避免这种情况.有没有其他更好的方法来创建该功能,或者可以通过使用jquery完成.我是jquery的新手,如果有可能用jquery做它会很棒.如果有人可以提供帮助,我将非常感激.

小智 2

您可以尝试这个代码示例。

function validate(box) {
  var val = box.value;
  if (!/^[AD]?$/.test(val) && isNaN(val) || (0 > val || 30 < val)) {
    box.value = '';
    alert('Only A or D or 0-30');
  }
}
Run Code Online (Sandbox Code Playgroud)
<input type='text' value='30' onblur='validate(this);' />
Run Code Online (Sandbox Code Playgroud)