我有用户输入的字段,我会将其传递给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');
我接下来要做的就是弹出警报,看看标题是什么。它只是说[对象,对象]。
所以我的问题是:
是否可以将列表项集合中的选定项目连接成字符串?
或者,即使在我的代码后面,然后调用jquery函数,我从回发中获取所有表单值是否更好?如果这是一个选项,我试图这样做,但失败了。它告诉我它找不到方法。所以我绝对不会在回发按钮事件时正确调用jquery函数。
感谢。
答案 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服务忙碌。如果需要,可以将上面的代码移动到按钮单击事件。