Jquery - 首字母不应该是数字

时间:2014-10-14 10:47:10

标签: javascript jquery

textbox第一个字符not be number。所以我有以下代码: -

DEMO

$('#FieldName').keyup(function (e) {
    if ($(this).val().length === 1 && $.isNumeric($(this).val())) {
        $(this).val('');
        alert('First letter should not be Numeric.!');
    }
});

以上代码有效,但typed fast时无效。尝试在小提琴中键入快速数字。它会接受数字。

这是什么解决方案?

5 个答案:

答案 0 :(得分:3)

使用RegEx的简单解决方案



$(function() {
  $('.notFirst').on('input', function() {
    this.value = this.value.replace(/^(\d+)/, '');
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="notFirst" />
&#13;
&#13;
&#13;

答案 1 :(得分:2)

试试这个。只使用带slice(0,1):的输入文字的第一个字母并验证。

    $('#FieldName').keyup(function(e) {
      if ($.isNumeric($(this).val().slice(0, 1))) {
        $(this).val('');
        alert('First letter should not be Numeric.!');
      }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="FieldName" />

答案 2 :(得分:1)

$('#FieldName').keypress(function (e) {
    if ($(this).val().length === 1 && $.isNumeric($(this).val())) {
        $(this).val('');
        e.preventDefault();
        alert('First letter should not be Numeric.!');
    }
});

在你的函数中添加e.preventDefault()。

演示:

http://jsfiddle.net/b653oo8c/

答案 3 :(得分:1)

由于问题是当人员快速输入时,我认为这是一个性能问题。

要修复它,你可以这样做:

$('#FieldName').keydown(function(){
    if(this.value.length==1 && this.value<<0==this.value)
    {
        this.value='';
        alert('First letter should not be Numeric.!');
    }
});

您的代码应该在事件处理程序中运行 AS FAST AS POSSIBLE

使用jQuery,您只需减慢代码。

不缓存$(this)会减慢更多

我使用jQuery来解决跨浏览器问题,并使用su keydown事件。

可以使用它,并且可以正常工作:

document.getElementById('FieldName').onkeydown=function(){
    if(this.value.length==1 && this.value<<0==this.value)
    {
        this.value='';
        alert('First letter should not be Numeric.!');
    }
}

根据@Kaiido的说法,检查keyup事件发生时的长度是个问题。

如果我们保持表现,我们可以摆脱长度检查:

document.getElementById('FieldName').onkeydown=function(){
    if(this.value.charAt(0)+1)//if it is a number, it will add 1, making it check as true
    {
        this.value='';
        alert('First letter should not be Numeric.!');
    }
});

答案 4 :(得分:0)

keyup()事件更改为keydown()。这应该有所帮助。

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