如何避免在html中输入字母? [复制]

Posted

技术标签:

【中文标题】如何避免在html中输入字母? [复制]【英文标题】:how to avoid typing letters in html? [duplicate] 【发布时间】:2014-08-04 00:23:15 【问题描述】:

我们如何避免在 html 标签中输入字母或数字?我们还需要在 php 中创建代码块来避免它吗?或者我们可以像这样通过 html 禁用它:

    <input type="text" />

我们可以改成这样吗?

    <input type="number" />

这样,如果您按任何字母,字母就不会出现。

<body>
<table>
<tr>
    <td>this is for text</td><td><input type="text" size="5" maxlength="5"></td>
    <td>this for numbers</td><td><input type="number" size="5" maxlength="5"></td>
</tr>
</table>
</body>

有什么想法吗? 我应该把 javascript 放在哪里?

【问题讨论】:

是的,你可以。就像你建议的那样。 是的,但是您总是需要重新验证服务器上的数据,因为标记不能保证任何事情。 我的意思是,当你在键盘上按字母时它不会显示出来。在我的示例中,用户可以输入任何字符。 @user3737597 这取决于您使用的浏览器。如果您希望它在跨浏览器中发挥相同的作用,您需要使用一些 javascript(并且仍然在服务器端验证它) 有什么方法可以禁用输入字母吗?可以举个例子吗? 【参考方案1】:

您可以在 SUBMIT 上对数字使用此验证:

pattern="[0-9]10"

10这里最多允许10个数字

查看 Regex 备忘单了解更多信息:

link

或者这里是通过 javascript 验证的方式,无需提交:

<input type='text' onkeypress='validate(event)' />

  function validate(evt) 
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) 
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  

为用户编辑(按回车检查数字):

<input type="text" id="txtTextBox" />

$('#txtTextBox').keypress(function(event)
    var regex = /[0-9]|\./;
    var text = $("input[type=text]").val();
    var keycode = (event.keyCode ? event.keyCode : event.which);
    if(keycode == '13' && !(regex.test(text))) 
     alert('You pressed a "enter" key in textbox'); 

);

Jsfiddle:

link

【讨论】:

明白了!但是如何将 ENTER 键添加到该 [0-9] 值? 回车键是什么意思?你到底想做什么? 我想要的是当我在文本字段中输入数字并按 Enter 时,它会自动发送我输入的数字。我只想启用“ENTER KEY”,因为在这个例子中它只允许按下数字而不是“ENTER KEY” 这是你的 jsfiddle:jsfiddle.net/RC78z/105 如果对你有帮助请点个赞【参考方案2】:

您可以绑定按键事件处理程序并使用客户端脚本检查按键代码。返回false 将阻止输入。以下是javascript中的示例

 element.onkeypress(function(e)
   var keycode = e.which;
         /* 48-57: 0 -9
            8:backspace */
   if((keycode >= 48 && keycode <= 57) || keycode == 8 )
      return true;
   return false;
);

【讨论】:

我有这个代码 @user3737597 抱歉,我没听懂你……? 对不起,我不小心按了回车...我把你的代码@T J 放在哪里? 【参考方案3】:

&lt;input type="number" /&gt; 完全有效。但是,它仍然允许用户输入字母。这是一个使用 jQuery 的解决方案:

$("#myInput").keydown(function(e)
    if(((e.keyCode < 48) || (e.keyCode > 57))&& e.keyCode != 8)
        e.preventDefault();
    
);

小提琴:http://jsfiddle.net/yC7un/1/

如果您不使用 jQuery,请使用以下“香草”JS:

document.getElementById("myInput").onkeydown=function(e)
    if(((e.keyCode < 48) || (e.keyCode > 57))&& e.keyCode != 8)
        return false;
     return true;
;

小提琴:http://jsfiddle.net/yC7un/2/

【讨论】:

对不起,我对 jQuery 不太熟悉,我们可以用 php 制作吗? PHP 是服务器端的。 PHP 可以阻止用户输入字母。 @user3737597 我刚刚用非 jQuery 解决方案更新了我的答案。【参考方案4】:

某些浏览器仍允许输入字母,但不会在表单提交时进行验证。 正如科尔伯顿所说,您的建议是最正确的方法。

您可以制作一个 javascript onkeydown-function 来检查用户的输入并覆盖它。

【讨论】:

【参考方案5】:

使用模式。

对于字母:

<input type="text" pattern="[A-Za-z]" />

数字

<input type="text" pattern="[0-9]" />

仅适用于 HTML5 和输入类型“文本、搜索、url、电话、电子邮件和密码”,对于较旧的浏览器,您应该使用 JS/jQuery。

【讨论】:

您仍然可以在此处键入任何内容。它只是没有验证。 我忘了它在提交时验证,那么你最好的选择是 JS

以上是关于如何避免在html中输入字母? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何避免mysql DB的高负载?

如何避免在 rand() 函数生成的矩阵中使用相同的成员?

如何避免 keyPress 方法使我的绘图在处理 3 中永久化?

如何避免在 Jsoup 解析中环绕 html 头标签

如何使用正则表达式避免在 unicode 重音后大写字母 [重复]

如何匹配字母和数字组合的单词,但避免只有数字的单词