Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery-第一个字母不应该是数字_Javascript_Jquery - Fatal编程技术网

Javascript Jquery-第一个字母不应该是数字

Javascript Jquery-第一个字母不应该是数字,javascript,jquery,Javascript,Jquery,文本框中的第一个字符不应为数字。因此,我有以下代码:- 上面的代码可以工作,但在快速键入时不起作用。试着在小提琴上快速键入数字。它将接受数字 此问题的解决方案是什么?将keyup事件更改为keydown。这应该会有所帮助 $('#FieldName').keydown(function (e) { if ($(this).val().length === 1 && $.isNumeric($(this).val())) { $(this).val(''); a

文本框中的第一个字符不应为数字。因此,我有以下代码:-

上面的代码可以工作,但在快速键入时不起作用。试着在小提琴上快速键入数字。它将接受数字

此问题的解决方案是什么?

将keyup事件更改为keydown。这应该会有所帮助

$('#FieldName').keydown(function (e) {
  if ($(this).val().length === 1 && $.isNumeric($(this).val())) {
    $(this).val('');
    alert('First letter should not be Numeric.!');
  }
});
在函数中添加e.preventDefault

演示:


带正则表达式的简单解

$function{ $'.notFirst'。在“输入”上,函数{ this.value=this.value.replace/^\d+/; }; };
试试这个。仅使用和验证键入文本的第一个字母

$'FieldName'.KeyUpFunction{ 如果$.isNumeric$this.val.slice0,则为1{ $this.val; 警告“第一个字母不应该是数字!”; } };
因为问题是当人打字快时,我认为这是一个性能问题

要解决此问题,可以执行以下操作:

$'FieldName'.keydown函数{
如果this.value.length==1&&this.value为什么要将其绑定到keyup?这真的有必要吗?试着想想你实际上在尝试做什么,你试图实现的逻辑和用户体验是什么。不要只是将其切换到keydown,真正想一想你想用这个限制实现什么,以及你希望它如何工作-当你有了它,你就可以开始实验了。到目前为止,这是最好的解决方案,但我真的认为实际需要可能比这更复杂,除非这是一个游戏。这很好…但我想弹出一个警报…或者用户可能会想,如果他先键入数字…那为什么没有发生任何事情…:这会产生一种奇怪的效果当你一直按一个数字时!这不是性能问题,只是他在找value.length==1的keyup。当然,如果他打字快,当keyup启动时,值大于1,因为他已经按了另一个键。这仍然是一个有效点。如果这是问题,我会调整答案。@kaido我有updated给出了答案,并牢记了速度和兼容性。$this.val[0]未定义。我在这里提到slice是因为它在许多其他情况下都很有用,我非常喜欢它。
$('#FieldName').keydown(function (e) {
  if ($(this).val().length === 1 && $.isNumeric($(this).val())) {
    $(this).val('');
    alert('First letter should not be Numeric.!');
  }
});
$('#FieldName').keypress(function (e) {
    if ($(this).val().length === 1 && $.isNumeric($(this).val())) {
        $(this).val('');
        e.preventDefault();
        alert('First letter should not be Numeric.!');
    }
});