0

我有用户将输入的字段,我会将其传递给 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 函数。

谢谢。

4

2 回答 2

1

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

具有以下 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>

可能会解决你的问题。

实际上,手动绑定数据是一件非常痛苦的事情,我建议您查看现代 MVVM 库,例如 knockout.js。例如: http: //knockoutjs.com/examples/controlTypes.html

于 2012-05-07T00:40:05.513 回答
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');

每次有变化时,它都会调用这个函数,这意味着它会让你的网络服务繁忙。如果需要,您可以将上面的代码移动到按钮单击事件。

于 2012-05-07T00:39:00.100 回答