如何让输入警报消息仅在输入字母而不是数字时起作用?不让任何文字提示
How do I get an input alert message to work only when imputing alphabets, not for numbers? Without letting any text tipped in
如何让输入警告消息仅在输入字母时起作用,而不是在输入数字时起作用?不让任何文本提示。
在输入数字时不应有警报,但在输入字母时会收到警报。我也接受 JavaScript 标记的解决方案,但如果有 内联解决方案 那么这是首选。
此功能的问题在于,如果您像我一样快速给小费,它会让您在框中键入文本。它应该是 并且不让任何文本提示 。
JavaScript:
<script language="JavaScript">
function checkInp()
{
var x = document.forms["isnform04"]["areinp"].value;
var regex = /^[0-9]+$/;
if (!x.match(regex))
{
alert("no text here, input numbers only");
return false;
}
}
</script>
HTML:
<input type="text" name="areinp" size="30" value="" onChange="areCon()" onkeyup="return checkInp();">
没有查询解决方案
更新:我也用过这个:
<input type="text" name="areinp" size="30" value="" onChange="areCon()" onkeyup="if (this.value=this.value.replace(/[^\d]/,'')) alert('no text here, input numbers only');">
在 onkeyup
属性中放置一个正则表达式测试。
onkeyup="if(/\D/.test(this.value)) alert('no text here, input numbers only')"
如果要取消该事件,则需要使用preventDefault()
,即不允许文本框接受非数字输入。这样您就不必为删除它而烦恼。但是,preventDefault()
不适用于 onkeyup
。使用 onkeydown
.
JS:
function checkKey(e)
{
if (e.keyCode != 8 && // allow backspace
e.keyCode != 46 && // allow delete
e.keyCode != 37 && // allow left arrow
e.keyCode != 39 && // allow right arrow
(e.keyCode < 48 || e.keyCode > 57)) // allow numerics only
{
e.preventDefault();
}
}
HTML:
<input type="text" onkeydown="checkKey(event)" />
注意 - 在每次按下/按下/向上键时提醒用户是很糟糕的。简直烦人。避免!如上所示,静静地阻止不需要的键。
通过尝试和混合使用不同的代码,我自己找到了答案。我做了一个过滤器,它只允许我在框中选择的字符,然后向它添加了一条警告消息,WHALA 在那里工作。
这是我找到的答案:
JavaScript:
<script language="javascript" type="text/javascript">
function TextFilter(myfield, e)
{
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
return true;
else if ((("0123456789.").indexOf(keychar) > -1))
return true;
else if ((keychar == ""))
{
if (myfield.value.indexOf(keychar) > -1)
return false;
}
else
return false;
}
function checkInp()
{
var x = document.forms["isnform04"]["areinp"].value;
var regex = /^[0-9]+$/;
if (!x.match(regex))
{
alert("no text here, input numbers only");
return false;
}
}
</script>
HTML:
<input type="text" name="areinp" id="test" size="30" value="" onChange="areCon()" onkeypress="return TextFilter(this, event)" onkeyup="checkInp()">
如何让输入警告消息仅在输入字母时起作用,而不是在输入数字时起作用?不让任何文本提示。 在输入数字时不应有警报,但在输入字母时会收到警报。我也接受 JavaScript 标记的解决方案,但如果有 内联解决方案 那么这是首选。
此功能的问题在于,如果您像我一样快速给小费,它会让您在框中键入文本。它应该是 并且不让任何文本提示 。
JavaScript:
<script language="JavaScript">
function checkInp()
{
var x = document.forms["isnform04"]["areinp"].value;
var regex = /^[0-9]+$/;
if (!x.match(regex))
{
alert("no text here, input numbers only");
return false;
}
}
</script>
HTML:
<input type="text" name="areinp" size="30" value="" onChange="areCon()" onkeyup="return checkInp();">
没有查询解决方案
更新:我也用过这个:
<input type="text" name="areinp" size="30" value="" onChange="areCon()" onkeyup="if (this.value=this.value.replace(/[^\d]/,'')) alert('no text here, input numbers only');">
在 onkeyup
属性中放置一个正则表达式测试。
onkeyup="if(/\D/.test(this.value)) alert('no text here, input numbers only')"
如果要取消该事件,则需要使用preventDefault()
,即不允许文本框接受非数字输入。这样您就不必为删除它而烦恼。但是,preventDefault()
不适用于 onkeyup
。使用 onkeydown
.
JS:
function checkKey(e)
{
if (e.keyCode != 8 && // allow backspace
e.keyCode != 46 && // allow delete
e.keyCode != 37 && // allow left arrow
e.keyCode != 39 && // allow right arrow
(e.keyCode < 48 || e.keyCode > 57)) // allow numerics only
{
e.preventDefault();
}
}
HTML:
<input type="text" onkeydown="checkKey(event)" />
注意 - 在每次按下/按下/向上键时提醒用户是很糟糕的。简直烦人。避免!如上所示,静静地阻止不需要的键。
通过尝试和混合使用不同的代码,我自己找到了答案。我做了一个过滤器,它只允许我在框中选择的字符,然后向它添加了一条警告消息,WHALA 在那里工作。
这是我找到的答案:
JavaScript:
<script language="javascript" type="text/javascript">
function TextFilter(myfield, e)
{
var key;
var keychar;
if (window.event)
key = window.event.keyCode;
else if (e)
key = e.which;
else
return true;
keychar = String.fromCharCode(key);
if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
return true;
else if ((("0123456789.").indexOf(keychar) > -1))
return true;
else if ((keychar == ""))
{
if (myfield.value.indexOf(keychar) > -1)
return false;
}
else
return false;
}
function checkInp()
{
var x = document.forms["isnform04"]["areinp"].value;
var regex = /^[0-9]+$/;
if (!x.match(regex))
{
alert("no text here, input numbers only");
return false;
}
}
</script>
HTML:
<input type="text" name="areinp" id="test" size="30" value="" onChange="areCon()" onkeypress="return TextFilter(this, event)" onkeyup="checkInp()">