[英]jquery-select2 showing first value selected by default
我使用下面的代码填充多选:
<s:select id = "deviceTypes"
name = "serviceVO.deviceTypes"
multiple = "multiple"
required = "true"
onBeforeTopics = "openLoader"
onCompleteTopics = "closeLoader"
key = "service.authoring.label.deviceTypes"
tooltip = "%{getText('service .authoring.label.deviceTypes.info')}"
list = "deviceTypesList"
listKey = "value"
listValue = "name"
cssClass = "search-val form-control" />
并在document.ready上我打电话:
$("#deviceTypes").attr("multiple","true");
$("#deviceTypes").select2();
有了它,它默认显示在页面加载时选择的第一个选项值,我不想要。 我希望用户应该选择值,一旦用户提交表单,然后在修改页面上,所选值应显示在选择框中,用户可以添加或删除值。
key
属性是一个简写,用三个属性设置相同的值: name
, value
, label
。
您应该知道, value
(如果存在)预设元素的值,而name
用于将参数发送回操作,并在value
丢失的情况下预设值。
然后将key
与上述属性之一结合使用会产生误导和错误。
删除key
,改为使用label
:
<s:select id = "deviceTypes"
name = "serviceVO.deviceTypes"
multiple = "multiple"
required = "true"
onBeforeTopics = "openLoader"
onCompleteTopics = "closeLoader"
label = "service.authoring.label.deviceTypes"
tooltip = "%{getText('service .authoring.label.deviceTypes.info')}"
list = "deviceTypesList"
listKey = "value"
listValue = "name"
cssClass = "search-val form-control" />
请注意, serviceVO.deviceTypes
必须是带有getter的action属性,类型为List(或其他),第一次为null,并包含下次读取的选定值。
仍然没有得到你想要的。
但我认为你可以用一些java脚本代码来做到这一点。 创建一个s:select
或sj:select
包含所有数据的选项,但由style="display: none"
使其不可见。 使用空选项将第二个选择框作为普通html select
,这是用户看到的。 因此,您的主选择框将在页面加载时第一次加载,但用户无法看到它。
您可以使用户可以看到某些操作,例如单击复选框。
但是,提交表单不会将所有选择选项传递给服务器,只会将选定的选项发送到服务器。
我能够在页面加载时使用以下代码:
$("#deviceTypes").attr("multiple","true");
$("#deviceTypes").select2();
var selectedDevice=[];
var deviceList = '<s:property value="serviceVO.packagedService.deviceType" />';
$.each(deviceList, function(index,value) {
selectedDevice.push(value);
});
$("#deviceTypes").select2("val", selectedDevice);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.