RadComboBox自定义文本需要具有Outlook行为

时间:2016-11-01 20:25:19

标签: javascript telerik

我们有一个自定义的Telerik RadComboBox,它通过从下拉列表中选择名称,在组合框的文本框字段中构建由分号分隔的文本字符串。我们希望改进这一点并复制类似于Outlook的行为,其中可以从文本框中选择和删除单个名称。选定的名称存储在隐藏的输入字段中。另一个隐藏字段带有CSV的ID列表。两个隐藏字段都被视为数组,它们的值与索引具有一对一的关系。我们正在考虑的方法是在每个名称周围包含某种标记,例如跨度,这样当用户选择特定名称时,整个名称将被突出显示,然后可以以某种方式被检测到。这可以通过使用ItemTemplate来完成吗?

OnClientSelectedIndexChanged事件触发显示的javascript,并将名称列表追加到文本框中。



      function RecipientSelectedIndexChanged(sender, args) {
            var combo = $find('<%= rcbRecipients.ClientID%>');
            var userid = combo.get_selectedItem().get_value();
            var name = combo.get_selectedItem()._text;
            var listID = $get("<%= hdnRecipientIdList.ClientID%>").value;
            var listName = $get("<%= hdnRecipientNameList.ClientID%>").value;
            var listIDArray = new Array();
            var listNameArray = new Array();
            if (listID != '') {
                listIDArray = listID.split(',');
                listNameArray = listName.split('; ');
            }
            listNameArray.pop();
            for (var i = 0; i < listNameArray.length; i++) {
                listNameArray[i] = listNameArray[i] + '; ';
            }
            var x = listIDArray.indexOf(name);
            if (x == -1) {
                listIDArray.push(userid);
                listNameArray.push(name + '; ');
                listID = listIDArray.toString();
                var y = listNameArray.join('');
                listName = y;
            }
            $get("<%= hdnRecipientIdList.ClientID%>").value = listID;
            $get("<%= hdnRecipientNameList.ClientID%>").value = listName;

            combo.trackChanges();
            var item = combo.findItemByText(name);
            item.hide();

            combo.set_text(listName);
            combo.commitChanges();
            combo.showDropDown();
        }
&#13;
&#13;
&#13;

0 个答案:

没有答案