【问题标题】:jQuery Validator, programmatically show errorsjQuery Validator,以编程方式显示错误
【发布时间】:2009-02-06 04:03:09
【问题描述】:

我可以这样做:

validator.showErrors({ "nameOfField" : "ErrorMessage" });

这很好,但是如果我尝试做这样的事情:

var propertyName = "nameOfField";
var errorMessage = "ErrorMessage";
validator.showErrors({ propertyName : errorMessage });

它会引发“元素未定义”错误。

【问题讨论】:

  • var errorMessage = "ErrorMessage" 确实有一个 ;在工作代码的最后。这个问题的错别字

标签: javascript jquery


【解决方案1】:

怎么样:

var propertyName = "nameOfField";
var errorMessage = "ErrorMessage";

var obj = new Object();
obj[propertyName] = errorMessage;

validator.showErrors(obj);

值得注意的是,以下三种语法是等价的:

var a = {'a':0, 'b':1, 'c':2};

var b = new Object();
b['a'] = 0;
b['b'] = 1;
b['c'] = 2;

var c = new Object();
c.a = 0;
c.b = 1;
c.c = 2;

【讨论】:

  • 我唯一建议的改进是只使用{} 而不是new Object()
【解决方案2】:

顺便说一句,您收到“元素未定义”错误的原因是:

var propertyName = "test";
var a = {propertyName: "test"};

相当于..

var a = {"propertyName": "test"};

也就是说,您没有将 propertyName 的值分配为键,而是将 propertyName 作为字符串分配给它。

【讨论】:

    【解决方案3】:

    这应该可以正常工作。也许缺少一个;在错误消息抛出一些东西之后。你用的是什么浏览器?

    此警报在 IE7 上运行良好

    <html>
    <head>
        <script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js"></script>
        <script type="text/javascript">
            $(function() {
                var name = "name";
                var value = "value";
                var obj = eval("({ '"+name+"' : '"+value+"' })");
                alert(obj[name]);
            });
    
        </script>
    </head>
    <body>
    </body>
    </html>
    

    【讨论】:

    • 缺乏;是问题中的错字(实际代码中不存在)。我正在使用FF
    • 这个例子是错误的。如果您设置了var name = "blork"(名称是任意的),示例将失败。
    • @Justice 谢谢。我将其更新为一个有效的示例。但其他答案更好。
    猜你喜欢
    • 1970-01-01
    • 2011-09-05
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多