在javascript名称验证中有疑问

时间:2010-06-07 11:19:53

标签: javascript

我正在使用以下验证文本框,它只接受字母,最多50个字符。我直接在参数中传递对象。以下情况通过直接给出字段名称“my_text”工作正常。但是如果我在变量中传递它,那个时候它不起作用(注释if语句)。请帮我。我的要求是每次进入charater时,硬编码字段名称都不应该用于验证。

   <html><head>

    <script language=JavaScript>
    function check_length(my_form,fieldName)
    {
         alert(fieldName);
         // if (my_form.fieldName.value.length >= maxLen) {
         if (my_form.my_text.value.length >= maxLen) { 
               var msg = "You have reached your maximum limit of characters allowed";
               alert(msg);
               my_form.my_text.value = my_form.my_text.value.substring(0, maxLen);
         }
         else{ 
       var keyCode = window.event.keyCode;
       if ((keyCode < 65 || keyCode > 90) && (keyCode < 97 || keyCode > 123) && keyCode != 32)
     {
    window.event.returnValue = false;
    alert("Enter only Alphabets");
     }
     my_form.text_num.value = maxLen - my_form.my_text.value.length;}
    }

</script>

 </head>

 <body>
 <form name=my_form method=post>
 <input type="text" onKeyPress=check_length(this.form,this.name); name=my_text rows=4     cols=30>
 <br> 
  <input size=1 value=50 name=text_num> Characters Left
   </form>

   </body>
  </html> 

1 个答案:

答案 0 :(得分:3)

试试这个:

if (my_form[fieldName].value.length >= maxLength)

引用对象的属性时,表单

object.constantName

object['constantName']

是一样的。请注意,在第二个中,我引用了属性名称。当您使用方括号而不是“。”时。为了引用属性,Javascript 在方括号中计算表达式。在您的情况下,总是有一个必须进行评估的变量,因此您必须使用方括号。