2011-07-29 94 views
1

我正在做一些使用javascript的项目的表单验证。即将做的工作,但似乎可能有更好的方法来做到这一点。这里是我所拥有的一个例子。什么是用JavaScript做表单验证的“正确”方法?

onkeypress="return keyNumOnly(event)" 
function keyNumOnly(key) 
{//this allows numbers and decimals. 
    var keychar; 
    var numcheck; 
    var keynum; 
    if(window.event) // IE 
     { 
      keynum = key.keyCode; 
     }  
    else if(key.which) // Netscape/Firefox/Opera 
     { 
      keynum = key.which; 
     } 
    if (keynum==8) 
     { 
      return true; 
     } 
    keychar = String.fromCharCode(keynum); 
    numcheck = /\d/; 
    if (keychar== ".") 
     { 
      return true;  
     } 
    return numcheck.test(keychar); 
} 

回答

1

一些清理:

someTextbox.onkeypress = function(event) { // you can pass a function directly 
    var event = event || window.event, 
     // this means: event or window.event if event does not exist 

     keynum = event.keyCode || event.which, 
     // event.keyCode or event.which otherwise 

     keychar = String.fromCharCode(keynum), 

     numcheck = /\d/; 


    if(/\t|\./.test(keychar)) { 
     // checking for dot or tab using a regexp: \t is tab, | means 'or', \. is dot 
     return true; 
    } 


    return numcheck.test(keychar); 
} 
+0

谢谢。我很新,所以我知道很多我的代码可以使用一些清理。 – chris

1

我建议使用预先打包的解决方案来进行表单验证。例如,如果您可以使用jQuery,那么jQuery Validation Plugin在验证表单方面做得非常出色 - 既可以进行实时验证(就像您正在做的那样)以及“提交”事件之前的验证。

+0

感谢贾斯汀。我在我的项目的其他部分使用jquery,所以我将不得不查找如何实现它。是的,我们正在对此部分进行实时验证。提交验证将在服务器上完成。 – chris

+0

不客气。我同意你也需要做服务器端验证。我只是想指出这个插件的一些功能。无论如何,祝你好运! :) –

+0

你认为你给我一些你用于验证的示例jQuery代码吗? – chris

0

表单匹配(例如,针对正则表达式)是HTML5的一部分,因此很快就可以由浏览器自己完成。

Dive into HTML5 explains how

+0

好信息,但这并不真正回答这个问题 – Pepe

+0

这是一些非常有趣的信息。但我所做的验证非常具体。就像我只想要数字加上一些特殊字符,如#.-()。 – chris

相关问题