0

我有一个包含多个下拉列表和一个列表框的表单,表单末尾是一个“确认页面”,显示所有输入的数据。我遇到的问题是列表框允许用户选择多个项目,当我实现 jquery 来处理这个问题时,它也适用于下拉框。

例如,这会导致确认页面显示“1.Mr”而不是来自称呼下拉框中的“Mr”。

但列表框项目显示正确,下面是我的 jquery...

  var displayConfirm = function () {
            $('.display-value', form).each(function () {
                var input = $('[name="' + $(this).attr("data-display") + '"]',form);
                if (input.is(":text") || input.is("textarea")) {
                    $(this).text(input.val());
                } else if (input.is("select")) {
                    var html = '<ol>';
                    input.find('option:selected').each(function () {
                        html += '<li>' + $(this).text() + '</li>';
                    });
                    html += '</ol>';
                    $(this).html(html);
                }
            });
        };

有没有办法改变以包含类似..

 else if (input.is("select") && input.val() < 1 ) {

谢谢

4

1 回答 1

0

列表框帮助器呈现为<select multiple="multiple">. 因此,要选择正确的值,您必须检查您找到的选择标签中的多个属性。

$(input.is('select')){
    if (input.attr('multiple') == "multiple") {
        var html = '<ol>';
        input.find('option:selected').each(function () {
            html += '<li>' + $(this).text() + '</li>';
        });
        html += '</ol>';
        $(this).html(html);
    } else {
        $(this).text(input.val())
    }
}

理想情况下,您还可以丢失 else 条件并使其成为更通用的条件,您不检查任何其他类型。所以更新版本的代码看起来像这样

if (input.is("select") && input.attr('multiple') == "multiple") {
    var html = '<ol>';
    input.find('option:selected').each(function () {
        html += '<li>' + $(this).text() + '</li>';
    });
    html += '</ol>';
    $(this).html(html);
} else {
    $(this).text(input.val());
}

你可以在这里找到一个工作小提琴。

于 2013-08-29T15:02:22.000 回答