2013-10-24 36 views
1

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

我的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()以外的其他功能,允许我发送一个列表,而不是我现在得到的?

任何帮助赞赏,如果你需要澄清把它放在评论中,我会尝试澄清更多。

+0

你可能想[看看地图()](http://stackoverflow.com/a/5794756/1654265) –

+0

@AndreaLigios可惜我不太清楚如何能够解决我的问题: - (真的,我可以用这种方式构建一个键值对,但是......它不太正确$ .map()我最终得到了如下所示:'0 [name]:“scheduleableCriteria.locations”''0 [值]:“公寓”''1 [name]:“scheduleableCriteria。位置“''1 [value]:”Gym“'但我需要的是'scheduableCriteria.locations:公寓''scheduleable Criteria.locations:Gym' – buzzsawddog

+0

Struts将多个相同的名称转换为'List',每个实例都是一个条目使用地图,我将不得不迭代我的'Java动作'中的项目,并做一些时髦的幕后的东西。 – buzzsawddog

回答

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; 
} 
0
'scheduleableCriteria.locations': function() { 
     return $('#locationsSelect').val(); 
    } 

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

把所有的字段在表单标签提交,然后使用序列如下

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

那么您的代码将改为显示一些如:

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

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

解决方案2:

要创建自定义功能,来分析选择,并返回所有选择值的数组

Complete Solution Here

+0

可悲的是,这并没有工作,因为数据传送的方式。成员的细节出了什么问题,但似乎使用.serialize()最终做了一个k,v每个键只有一个字符的值。感谢您的帮助。 – buzzsawddog