2015-11-23 27 views
-2

请问我有我的jquery代码,因为我想做一些事情。我有一大堆文本框的表单。我想验证每个文本框只允许数字。还要显示错误的地方不是数字。如何在jquery中选择和设置多个文本框文本

var validateForm = function(frm){ 
     var isValid = true; 
     resetError(); 

     $(":text").each(function(variable){ 
      console.log("The variable is" , variable); 
      if(!isNormalInteger(variable.val)) 
      { 
       $("#error"+variable.id).text("Please enter an integer value"); 
       isValid = false; 
      } 
     }); 

     if(!isValid) 
      return false; 

    }; 

以上失败。当我在控制台上打印变量时,我得到的数字是0 - 9。我的文本框在空白处还有数字。我试过variable.val()仍然失败并返回号码。我修改我的选择到

$("input[type=text]", frm).each(); 

在哪里我的表单是由id选择我的表单。它也失败了。下面是我的html标签和文本框的例子。我对其中十

<div class="grid-grid-8"> 
    <input class=" text" id="id" name="name" type="text"> 
    <br> 
    <p class="hint">Once this limit is reached, you may no longer deposit.</p> 
    <p class="errorfield" id="errorMAXCASHBAL"></p> 

请我该如何选择它们正常吗?此外,我上面的重置函数也返回递增整数的值。 p属性是class errorField,我想设置文本属性。请问我该如何做到这一点?以前我只试过班级名称$(.errorField)。它也失败了。任何帮助,将不胜感激。

var resetError = function(){ 
     //reset error to empty 
     $("p errorfield").each(function(value){ 
      console.log("the val", value); 
      //value.text() = ''; 
     }); 
    }; 

//filter non integer/numbers 
function isNormalInteger(str) { 
     return /^\+?\d+$/.test(str); 
    } 
+0

能否请你加jsFiddler测试它? – wilsotobianco

+0

“isNormalInteger”做什么? – mplungjan

+0

@mplugjan它过滤文本以确保只有整数或数字被用户键入。我更新了我的代码先生,你可以看到。 – brickleberry

回答

0

您使用.each错的,因为第一个参数是索引,第二个是元素。检查documentation。 此外,对于resetError正确的选择是:p.errorfield

所以,你应该修改你的代码看起来是这样的:

var resetError = function(){ 
    $("p.errorfield").each(function (idx, element) { 
     $(element).text(""); 
    }); 
}; 

有了这个,我相信你可以固定上的功能也是如此。 ;)

1

主要问题是你的选择器在JavaScript中。正如laszlokiss88指出.each()函数的错误用法。

这里是你的代码的工作示例:在本例中jsFiddle所有.each()函数中使用$(this)选择,而不是指数值

相关问题