Move option between selects

</> Source
<!DOCTYPE html>
<html>
<head>
	<title>Move option between selects</title>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
	<link rel="stylesheet" type="text/css" href="../../../codebase/fonts/font_roboto/roboto.css"/>
	<link rel="stylesheet" type="text/css" href="../../../codebase/dhtmlx.css"/>
	<script src="../../../codebase/dhtmlx.js"></script>
	<script>
		var myForm, formData;
		function doOnLoad() {
			formData = [
				{type: "settings", position: "label-top", labelWidth: 160, inputWidth: 160, labelHeight: 20},
				{type: "multiselect", label: "All Contacts", name: "c_all", size: 8, options:[
					{value: "1", text: "Fernando Novick"},
					{value: "2", text: "Ted Spengler"},
					{value: "3", text: "Lilia Horace"},
					{value: "4", text: "Cody Derksen"},
					{value: "5", text: "Mathew Musso"},
					{value: "6", text: "Nelson Brayboy"}
				]},
				{type: "newcolumn"},
				{type: "block", list:[
					{type: "button", name: "add", value: ">>", offsetLeft: 25, offsetTop: 60},
					{type: "button", name: "remove", value: "<<", offsetLeft: 25}
				]},
				{type: "newcolumn"},
				{type: "multiselect", label: "Blocked Contacts", name: "c_blocked", size: 8, options:[
					{value: "7", text: "Harriett Wickwire"},
					{value: "8", text: "Fernando Frerichs"},
					{value: "9", text: "Erik Couey"}
				]}
			];
			myForm = new dhtmlXForm("myForm", formData);
			myForm.attachEvent("onButtonClick",function(name){
				if (name == "add" || name == "remove") {
					changeContactState(name=="add");
				};
			});
		}

		function changeContactState(block) {

			var ida = (block?"c_all":"c_blocked");
			var idb = (block?"c_blocked":"c_all");

			var sa = myForm.getSelect(ida);
			var sb = myForm.getSelect(idb);

			var t = myForm.getItemValue(ida);
			if (t.length == 0) return;
			eval("var k={"+t.join(":true,")+":true};");

			var w = 0;
			var ind = -1;
			while (w < sa.options.length) {
				if (k[sa.options[w].value]) {
					sb.options.add(new Option(sa.options[w].text,sa.options[w].value));
					sa.options.remove(w);
					ind = w;
				} else {
					w++;
				}
			}

			if (sa.options.length > 0 && ind >= 0) {
				if (sa.options.length > 0) sa.options[t.length>1?0:Math.min(ind,sa.options.length-1)].selected = true;
			}

		}

	</script>
</head>
<body onload="doOnLoad();">
	<div id="myForm" style="height: 200px;"></div>
</body>
</html>

Documentation

Check documentation to learn how to use the components and easily implement them in your applications.