jQuery选择值作为列表

时间:2013-10-24 14:02:49

标签: jquery struts2 fullcalendar

我正在使用fullcalendar在我的struts2应用程序中构建日历。但是......我遇到了一些问题。我们构建了一个高级搜索,允许我们过滤日历事件服务器端并返回结果列表。我能够让大多数东西都能正常工作,除了带有多个的选择,我认为这是因为我使用了我的jquery错误。

我的ajaxLocationCalendar.action期待查看位置列表,而不是包含多个位置的字符串。

在我的代码中,我有一个<select id="locationsSelect" multiple="multiple">,它有几个选项。

我的fullcalendar设置如下所示:

events: {
  url: 'ajaxLocationCalendar.action',
  data: {
    'scheduleableCriteria.approvalStatus': function() {
      return $('#approvalStatusSelect').val();
    },
    'scheduleableCriteria.locations': function() {
      return $('#locationsSelect').val();
    }
  }
}

#approvalStatusSelect完美无缺,因为有4个有效选项,而且只有一个选择。但是我遇到了#locationSelect

的问题

如果我没有选择任何内容,我最终会发送与任何内容不匹配的"null"。如果我只选择一个选项,我会得到一个有效的结果,因为它已正确包装。如果我尝试发送两个选中的,我最终会发送"Apartment,Building+3"

之类的内容

是否有.val()以外的功能可以让我发送列表而不是我现在得到的内容?

任何帮助表示感谢,如果您需要澄清,请将其放在评论中,我会尝试澄清更多。

2 个答案:

答案 0 :(得分:0)

'scheduleableCriteria.locations': function() {
      return $('#locationsSelect').val();
    }

这将只返回一个String - 以逗号分隔列表显示多个值。所以在行动中他们实际上最终成为一个单字符串。

将所有字段放在form-tag中提交,然后使用如下序列化

var submit_data = $('form').serialize();

然后,您的代码将更改为显示为:

events: {
  url: 'ajaxLocationCalendar.action',
  data: submit_data        
}

这样多选将作为数组而不是字符串提交。

解决方案2:

要创建自定义函数,要解析select并返回所有选定值的数组

Complete Solution Here

答案 1 :(得分:0)

以下结果使用以下内容,因为.serialize()和.seralizeArray()无法正常工作。

data: function() {
  var data = {};
  data['scheduleableCriteria.approvalStatus'] = $("#approvalStatusSelect").val();
  var locations = $("#locationsSelect").val();
  if (locations) {
    $.each(locations, function(i, location) {
      data['scheduleableCriteria.locations[' + i + ']'] = location;
    });
  }
  return data;
}