jQuery验证:根据类设置更多必需的消息

时间:2014-04-20 15:31:47

标签: javascript jquery asp.net-mvc jquery-select2

我们目前正在使用ASP.NET MVC 4创建一个项目。因为我正在使用select2插件,验证并不是那么容易。 jQuery验证中所需项目的标准消息是“此字段是必需的!”。经过几个小时的搜索,我发现了如何更改此消息。下面你可以看到我是如何改变它的,这是有用的(使用@Html.ValidationMessageFor(--property of my ViewModel--)显示消息。这很奇怪,因为我无法显示实际的Data Annotation消息,但jQuery消息确实很幸运。

$.validator.messages = {
    required: "@Resources.Question_MinOnePol"
};

这样可行,问题是我现在为每个必填字段获取相同的消息。我想根据id或类来获得不同的自定义消息。

我不知道该怎么做...希望你能给我一些如何实现这个目标的提示。

附加的:

使用select2的选择列表示例:

<select name="PoliticianIds" id="polDrop" multiple style="width: 700px" required class="select2pol required">
            @foreach (var par in ((List<Party>)ViewBag.Parties))
            {
                <optgroup label="@par.Name (@par.FullName)">

                    @foreach (var pol in ((List<Politician>)par.Politicians))
                    {
                        @(ViewBag.CurrPol = pol)
                        <option value="@pol.UserId">@pol.FirstName @pol.LastName (@pol.Party.Name)</option>
                    }

                </optgroup>
            }
        </select>
        @Html.ValidationMessageFor(model => model.PoliticianIds)

使其成为select2列表的脚本:

jQuery('#polDrop').select2({
        placeholder: "Selecteer een politicus...",
        maximumSelectionSize: 5,
        formatResult: format2,
        formatSelection: format2,
        escapeMarkup: function(m) {
            return m;
        }
    });

我的ViewModel适用于所有感兴趣的人:

public class CreateQuestionModel
{
    public Question Question { get; set; }
    [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Question_MinOnePol")]
    public List<int> PoliticianIds { get; set; }
    public List<int> TopicIds { get; set; }
}

如果需要,我很乐意提供任何其他细节。

1 个答案:

答案 0 :(得分:0)

在以下StackOverflow线程中找到答案:

jQuery validation: change default error message

对不起,之前没找到它!

我是如何解决的:

$('#polDrop').rules("add", {
        messages: {
            required: "Politician is required!"
        }
    });

    $('#topDrop').rules("add", {
        messages: {
            required: "Topic is required!"
        }
    });

我在jQuery中调用的id当然是我<select>的id!