2014-07-25 21 views
0

如何通过编辑下面的代码来限制在文本框(txt_edition)中输入特殊字符以进行验证?我只想输入数字。Javascript验证:阻止特殊字符从输入文本框中单击提交时

<script> 
function validateForm() 
{ 
var x = document.forms["frm_bokAdd"]["txt_edition"].value; 
if (x==null || x=="") 
{ 
    alert("Edition must be filled out"); 
    return false; 
} 
</script> 

下面是我的形式

<form name="frm_bokAdd" action ="#" method="post" onsubmit="return validateForm()" > 
<table border="0" align="center"> 
    <tr><td> <input type="text" name="txt_edition" ></td></tr> 
    <tr><td> <input type="submit" name="bookIns_submit" value="Add"></td></tr> 
</table> 
</form> 
+0

需要注意的是,其中* X *是一个表单控件的值,然后'X == null'将永远是假的。简单地测试'/\D/.test(x)'是否返回true,那么* x *包含非数字字符。 – RobG

+0

你想让该字段接受'。' ''后应该允许多少个号码。 – Roshan

回答

0

我怎样才能限制在文本框中输入特殊字符(txt_edition)

不要。允许用户以任何他们喜欢的方式得到有效的值,你真的只关心值发送到服务器时的有效值,即使这样你也应该在那里验证。

通过编辑以下代码进行验证?我只想输入数字。

刚测试时,提交表单,并传入调用形式的引用:

<form ... onsubmit="return validateForm(this)" > 

和功能:

function validateForm(form) { 
    var value = form.txt_edition.value; 

    if (/\D/.test(value) || value == '') { 
    alert("Edition must be filled out and contain only numbers"); 
    return false; 
    } 
} 
+0

非常感谢@RobG:D这正是我想要的......:D – Hny

0

使用正则表达式。

if (x.match(/^[0-9]*\.[0-9]*$/) !== null) { 
    //text is only numbers (use /^[0-9]*$/ for integers) 
} 
0

试试吧

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title></title> 
     <style type="text/css"> 
      body 
      { 
       font-size: 9pt; 
       font-family: Arial; 
      } 
     </style> 
    </head> 
    <body> 
     Alphanumeric value: 
     <input type="text" id="text1" onkeypress="return IsAlphaNumeric(event);" ondrop="return false;" 
      onpaste="return false;" /> 
     <span id="error" style="color: Red; display: none">* Special Characters not allowed</span> 
     <script type="text/javascript"> 
      var specialKeys = new Array(); 
      specialKeys.push(8); //Backspace 
      specialKeys.push(9); //Tab 
      specialKeys.push(46); //Delete 
      specialKeys.push(36); //Home 
      specialKeys.push(35); //End 
      specialKeys.push(37); //Left 
      specialKeys.push(39); //Right 
      function IsAlphaNumeric(e) { 
       var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode; 
       var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode)); 
       document.getElementById("error").style.display = ret ? "none" : "inline"; 
       return ret; 
      } 
     </script> 
    </body> 
    </html> 
0

尝试使用正则表达式 -

var edition = document.getElementById('txt_edition').value; 
    outputVal = edition.replace(/[^0-9a-zA-Z]/g,"");  
    if (edition != outputVal) { 
     return false; 
    } 
1

可以使用此

HTML

<input type="text" onkeypress="return isNumber(event)" > 

JS(在身体的末端)

function isNumber(evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    return true; 
} 

DEMO is Here

0

可以限制按键如下图所示,

function restrict_letters(e) { 
    var keyCode = e . keyCode == 0 ? e . charCode : e . keyCode; 
    // only 0 to 9 
    if (keyCode < 48 && keyCode > 57) { 
     return false; 
    } 
} 

您可以在here获得更多的键码。

也改变了HTML函数调用像下面,

<input type="text" onkeypress="return restrict_letters(event)"> 

注:函数调用需要给输入字段不是形式提交。

0

要允许用户仅输入号码,点。使用正则表达式

function NumAndTwoDecimals(event , obj){ 
    reg = /[^0-9.,]/g; 
    obj.value = obj.value.replace(reg,""); 
} 

SEE DEMO HERE

HTML代码

<input id="txtId" type="text" onkeyup="NumAndTwoDecimals(event , this);"></input> 

要限制用户使用后进入只有两个号 ''操作者使用

function NumAndTwoDecimals(e , field) { 
    var val = field.value; 
    var re = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)$/g; 
    var re1 = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)/g; 
    if (re.test(val)) { 
     //do something here 

    } else { 
     val = re1.exec(val); 
     if (val) { 
      field.value = val[0]; 
     } else { 
      field.value = ""; 
     } 
    } 
} 

SEE DEMO HERE