kendoMultiSelect

kendoMultiSelect with Same Val

by chanaka1

HTML

<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.1.226/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2013.1.226/styles/kendo.default.min.css">
<script src="http://cdn.kendostatic.com/2013.1.226/js/kendo.all.min.js"></script>
<select id="tags"></select>

JavaScript

var tags = [
		{ text: "Tag1", value:"Tag1" },
		{ text: "Tag2", value:"Tag2" },
		{ text: "Tag3", value:"Tag3" }
		];

		var newitemtext;

		var multiselect = $("#tags").kendoMultiSelect({
			change: function() {
				var value = this.value().slice(0);
				var dataitems = this.dataSource.data();

				var newtag = "";

				for (var i = 0; i < dataitems.length; i++) {
				    var dataItem = dataitems[i];

					if(dataItem.text.substring(0, "Add new tag: ".length) === "Add new tag: ") {
						newtag = dataItem.text.replace("Add new tag: ", "");
						this.dataSource.remove(dataItem);
					}
				}

				this.dataSource.add({value: newtag, text: newtag});

              if (newtag) {
                this.dataSource.filter({});
				if(this.value().length == 1)
				{
					this.value(newtag);
				}
				else
				{
                    value.push(newtag);
                    console.log(value);
					this.value(value);
				}
              }
			},
			dataBound: function() {
				if((newitemtext || this._prev) && newitemtext != this._prev)
				{
					newitemtext = this._prev;

					var dataitems = this.dataSource.data();

					var isfound = false;
					for (var i = 0; i < dataitems.length; i++) {
					    var dataItem = dataitems[i];

						if(dataItem.value != dataItem.text) {
							dataItem.text = "Add new tag: " + newitemtext;
							this.refresh();
							isfound = true;
						}
					}
					if(!isfound)
					{
						this.dataSource.add({text: "Add new tag: " + newitemtext, value: newitemtext});
						this.refresh();
					}
					this.search();
					this.open();
				}
			},
			dataSource: tags,
			dataTextField: "text",
			dataValueField: "value",
			filter: "contains",
			animation: false
		});