textbox
第一个字符not be number
。所以我有以下代码: -
$('#FieldName').keyup(function (e) {
if ($(this).val().length === 1 && $.isNumeric($(this).val())) {
$(this).val('');
alert('First letter should not be Numeric.!');
}
});
以上代码有效,但typed fast
时无效。尝试在小提琴中键入快速数字。它会接受数字。
这是什么解决方案?
答案 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;
答案 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()。
演示:
答案 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.!');
}
});