2013-06-05 191 views
0

我使用'id'的规则,因为它给了我更多的灵活性,把它连接到一个django项目主要问题是模型的字段名称是'名称'(name =“name”) - 这似乎是JavaScript中的保留字。JQuery验证自定义消息问题与.rules()

根据它看起来像什么,我想做的事是可能的,我几乎使用精确例子给出这里的文档: http://jqueryvalidation.org/rules/?rdfrom=http%3A%2F%2Fdocs.jquery.com%2Fmw%2Findex.php%3Ftitle%3DPlugins%2FValidation%2Frules%26redirect%3Dno#.22add.22rules

问题是我没有得到任何回自定义的错误消息指定,而是我猜默认值正在返回。即。如果输入了什么,我会得到默认的错误消息回:

“这是必须填写”

相对于我的自定义消息:

“需要输入”

如果我输入1性格我得到:

“请输入至少2个字符”

相对于我的自定义消息:

“请至少使用{0}个字符”

我运行的是Ubuntu 12.04,在Firefox和Chrome中都看到相同的行为。

对于JQuery,我几乎是个新手,所以我希望从我忽略的文档复制和粘贴时存在一个明显的问题...任何建议,将不胜感激。

我在下面包含了我的代码。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <meta http-equiv="Content-Language" content="en-us" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

    <title>jQuery Example 3</title> 

    <script type="text/javascript" language="javascript" src="Scripts/jquery-1.2.6.js"></script> 
    <script type="text/javascript" language="javascript" src="Scripts/jquery.validate.js"></script> 
    <script type="text/javascript" language="javascript"> 
     //Our validation script will go here. 
     $(document).ready(function(){ 
      // Set up validation based around the id. 
      $("#form1").validate(); 

      $("#fname1").rules("add", { 
       required: true, 
       minlength: 2, 
       messages: { 
        required: "Required input", 
        minlength: jQuery.format("Please, at least {0} characters are necessary") 
       } 
      }); 

      $("#lname1").rules("add", { 
       required: true 
      }); 
     }); 
    </script> 

    <style type="text/css"> 
    #container { 
     width: 350px; 
     height: 8em; 
     border: 1px #009933 solid; 
     background-color:#66FF66; 
     display:block; 
    } 

    label, input{ 
     margin:2px 0px 1px 4px; 
    } 

    label { 
     margin-top:3px; 
     font-family:"Times New Roman", Times, serif; 
     font-size:1.1em; 
    } 
    </style> 
</head> 

<body> 
<div id="container"> 
    <form id="form1"> 
     <label for="fname1">First Name: </label><br /> 
     <input name="txtFirstName" type="text" id="fname1" /><br /> 
     <label for="lname1">Last Name:</label><br /> 
     <input name="txtLastName" type="text" id="lname1" title="Please Enter a Last Name"/><br /> 
     <input type="submit" value="Submit" id="btnSubmit" /> 
    </form> 
</div> 
</body> 
</html> 

回答

0

你的代码工作正常,我已经测试过它,mabye第二个消息是混乱,你一点点:

如果我输入一个字符,我得到:

“请输入至少2个字符 “

相对于我的自定义消息:

” 请,至少{0}字符necessa RY”

{0}只是一个占位符,它会得到充满了minlength所以你让你自定义消息的值。

我复制/粘贴你的代码和测试它在不改变任何东西,它似乎很好地工作:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <meta http-equiv="Content-Language" content="en-us" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

    <title>jQuery Example 3</title> 

    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
    <script type="text/javascript" language="javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.js"></script> 
    <script type="text/javascript" language="javascript"> 
     //Our validation script will go here. 
     $(document).ready(function(){ 
      // Set up validation based around the id. 
      $("#form1").validate(); 

      $("#fname1").rules("add", { 
       required: true, 
       minlength: 5,// changed it to 5 just to test the placeholder 
       messages: { 
        required: "You custom message ", 
        minlength: jQuery.format("Please, at least {0} characters are necessary") 
       } 
      }); 

      $("#lname1").rules("add", { 
       required: true 
      }); 
     }); 
    </script> 

    <style type="text/css"> 
    #container { 
     width: 350px; 
     height: 8em; 
     border: 1px #009933 solid; 
     background-color:#66FF66; 
     display:block; 
    } 

    label, input{ 
     margin:2px 0px 1px 4px; 
    } 

    label { 
     margin-top:3px; 
     font-family:"Times New Roman", Times, serif; 
     font-size:1.1em; 
    } 
    </style> 
</head> 

<body> 
<div id="container"> 
    <form id="form1"> 
     <label for="fname1">First Name: </label><br /> 
     <input name="txtFirstName" type="text" id="fname1" /><br /> 
     <label for="lname1">Last Name:</label><br /> 
     <input name="txtLastName" type="text" id="lname1" title="Please Enter a Last Name"/><br /> 
     <input type="submit" value="Submit" id="btnSubmit" /> 
    </form> 
</div> 
</body> 
</html> 
+0

嗨 - 检查非常感谢!奇怪的是,我只是在第三个浏览器中再次尝试Chromium将此代码复制并粘贴到另一个新文件中,并且它工作正常......所以我又似乎遇到了正确清除浏览器缓存的问题。我希望我知道一些傻瓜证明的方式来检查这一点。 – jayuu