jQuery Validator, программно показать ошибки - PullRequest
4 голосов
/ 06 февраля 2009

Я могу сделать что-то вроде этого:

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

И это прекрасно работает, однако, если я пытаюсь сделать что-то вроде этого:

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

Выдает ошибку «элемент не определен».

Ответы [ 3 ]

7 голосов
/ 06 февраля 2009

А как же:

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;
1 голос
/ 06 февраля 2009

Кстати, причина, по которой вы получаете ошибку 'element is undefined', заключается в том, что:

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

эквивалентно ..

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

Т.е. вы не назначаете значение propertyName в качестве ключа, вы присваиваете propertyName в виде строки.

0 голосов
/ 06 февраля 2009

Это должно работать нормально. может быть, отсутствие; после сообщения об ошибке что-то скину. Какой браузер вы используете?

Это предупреждение отлично работает на 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...