2013-04-20 65 views
0

我有一个输入字段JavaScript的jQuery验证

<input type="text" name ="something" id ="something"/> 

我在编辑个人资料页面.SO写了这一个最初的字段值是无(串)。

我想,当用户在我写下面的代码,这个领域

不应进入数字之外的任何东西。

$(document).ready(function() { 
$("#something").keydown(function(event) { 
    // Allow: backspace, delete, tab, escape, and enter 
    if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || 
    // Allow: Ctrl+A 
    (event.keyCode == 65 && event.ctrlKey === true) || 
    // Allow: home, end, left, right 
    (event.keyCode >= 35 && event.keyCode <= 39)) { 
    // let it happen, don't do anything 
    return; 
    } 
    else { 
    // Ensure that it is a number and stop the keypress 
    if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { 
    event.preventDefault(); 
    } 
    } 
    }); 
}); 

但问题是,当用户提交而不改变这个框的值,这是无默认值。我的程序停止工作。

请帮我一把。

如何防止用户在输入框值为无或非数字的情况下不提交表格。

感谢

回答

0
function validNumber(elem){ 
    var regex = /^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/; 
    var value = elem.val(); 
    return regex.test(value); 
} 

$("#form-id").submit(function() { 
    if(validNumber($('#something'))){ 
     return true; // form is submitted 
    }else{ 
     // add any error message code here 
     return false; // form is stopped from being submitted 
    } 
}); 
+0

如果在输入框中没有预先存在的价值,这只会工作 – burning 2013-04-20 11:43:39

+0

已编辑,以显示如何在提交表单时检查它是否为数字。 – Joe 2013-04-20 11:46:25

+0

是的,这是我一直在寻找 – burning 2013-04-20 11:55:32

0
$(document).ready(function() { 

$.validator.addMethod("requiredField", function(value, element) { 
    if(value == '') 
     return false;  
    return true; 
}, "Number is required"); 
}); 


<input type="text" name ="somthing" is ="somthing" class="requiredField"/> 
+0

米不使用jQuery验证 – burning 2013-04-20 11:56:42

0

您可以设置onfocus="this.value=''" 在输入域,以消除焦点的默认值。

为了防止提交没有数字你可以检查提交 例如使用前:

function checkBeforeSubmit(){ 
    var val = fieldname.value; 
    var reg = val.replace(/^[0-9]+$/,""); 
    if(check !== ''){ 
      alert('only numerical!'); 
      return false; 
    } 
    return true; 
} 

<form onsubmit="return checkBeforeSubmit()">..</form>