jQuery - 获取listitem集合的选定选项?

时间:2012-05-07 00:14:34

标签: javascript jquery asp.net

我有用户输入的字段,我会将其传递给jQuery并传递给Web服务。

我可以通过以下方式获取文本框值:

var name = $(“#MainContent_txtName”)。val()

我遇到的问题是包含列表项集合的多选。 如果我要做这个服务器端,我会做类似的事情:

foreach (ListItem li in listTitles)
{
   if (li.Selected)
   {
     selectedValue += li.Value + ",";
   }
}

这将为我提供选择列表中选定值的字符串。 我无法从jQuery中获取它。 如果我做

var titles = $("#MainContent_selectListTitles").val() 

这显然是不正确的,因为它不会带回所选的列表项。 我看到一篇帖子表明,如果我说选择了选项,我可以检索它。 所以我尝试了这个:

var titles= $('#MainContent_selectListTitles option:selected');

我接下来要做的就是弹出警报,看看标题是什么。它只是说[对象,对象]。

所以我的问题是:

  1. 是否可以将列表项集合中的选定项目连接成字符串?

  2. 或者,即使在我的代码后面,然后调用jquery函数,我从回发中获取所有表单值是否更好?如果这是一个选项,我试图这样做,但失败了。它告诉我它找不到方法。所以我绝对不会在回发按钮事件时正确调用jquery函数。

  3. 感谢。

2 个答案:

答案 0 :(得分:1)

我对你的警报中有[对象,对象]并不感到惊讶 - 那是因为你已经拥有了一系列选定的项目(实际上,选择了两个项目)并且警报将你的数组显示为[对象,对象]这很好。

拥有以下html标记:

    <div>
        <select multiple="multiple" id="mySelect">
            <option value="test1" selected="selected">Test 1</option>
            <option value="test2">Test 2</option>
            <option value="test3" selected="selected">Test 3</option>
        </select>
    </div>

以下脚本:

<script type="text/javascript">
    $.ready = function () {
        var selectedItems = $("#mySelect option:selected");
        for (var i = 0; i < selectedItems.length; i++) {
            alert("The value is: "+selectedItems[i].value + "; the text is: "+selectedItems[i].text);
        }
    }
</script>

可能会解决您的问题。

实际上,手动绑定数据是一个巨大的痛苦,我建议你看看像knockout.js这样的现代MVVM库。 例如: http://knockoutjs.com/examples/controlTypes.html

答案 1 :(得分:0)

首先,确保您的项ID在客户端是正确的“MainContent_selectListTitles”。您可以通过“查看来源”进行检查。

如果ID正确,请按照此操作。

    $('#MainContent_selectListTitles').change(function () {
         var str = "";
         $('#MainContent_selectListTitles option:selected').each(function () {
              str += $(this).text() + " ";
              //pass str value to your web service here.
         });
    }).trigger('change');

每次有更改时,都会调用此函数,这意味着它会使您的Web服务忙碌。如果需要,可以将上面的代码移动到按钮单击事件。