0

我有一个 ASP.NET MVC 网页,它使用 ajax 提交表单,如下所示:

function ValidateFormAndAjaxSubmit(formId, callingElement) {

    if (IsNotDblClick(callingElement.id)) {
        var _form = $("#" + formId);

        var validator = _form.validate();
        var anyError = false;

        anyError = !_form.valid();

        if (anyError) {
            window.latestClick = '';
            return false; // exit if any error found    
        }

        $.post(_form.attr("action"), _form.serialize(), function (data) {

            if (data.success && data.redirectUrl.length > 0) {
                window.location.href = data.redirectUrl;
            }
            else {

                var isValid = validateResponse(_form, data);

                window.latestClick = '';
            }
        })
    }
}

表单中的所有控件都是使用 Html.TextBoxFor 等助手生成的,效果很好。

问题是 jquery 插件(Select2)会将常规文本框变成这样的列表:

<div class="floatLeft">
            <label class="controlTitleContainer" for="Url">Taggar</label>
            <br style="clear:both;">
            <div class="select2-container select2-container-multi bigdrop" id="s2id_txtTagBox" style="width: 408px">    <ul class="select2-choices" style="">  <li class="select2-search-choice">    <div>Film                </div>    <a href="#" onclick="return false;" class="select2-search-choice-close" tabindex="-1"></a></li><li class="select2-search-choice">    <div>Hund                </div>    <a href="#" onclick="return false;" class="select2-search-choice-close" tabindex="-1"></a></li><li class="select2-search-field">    <input type="text" autocomplete="off" class="select2-input valid" tabindex="0" style="width: 10px;">  </li></ul></div><input style="width: 408px; display: none;" class="bigdrop" id="txtTagBox" name="Tags" type="text" value="">
        </div>

您可以在此处看到文本框设置为不显示,而添加的标签显示为 ul 列表。在这种情况下,我已将 Film 和 Hund 添​​加到列表中。

我需要将这些值发送到服务(使用上面的 ajax 调用),问题是如何?

4

1 回答 1

0

从我从文档中可以看出,select2 设计用于选择列表,而不是文本框。尝试生成选择列表而不是文本框。

查看示例中“多值选择框”的源代码,底层标记是一个选择框,但插件会生成一个 div 使其看起来像一个文本框。

于 2013-01-23T20:59:53.967 回答