diff --git a/src/DependentSelectBox/JsonDependentSelectBox.php b/src/DependentSelectBox/JsonDependentSelectBox.php index 3e2033e..7c2020e 100644 --- a/src/DependentSelectBox/JsonDependentSelectBox.php +++ b/src/DependentSelectBox/JsonDependentSelectBox.php @@ -35,15 +35,19 @@ protected function addJsonResponseItem($selectBox) { public static function tryJsonResponse(Presenter $presenter) { if(empty(self::$jsonResoponseItems)) return; - + $payload = array( "type" => "JsonDependentSelectBoxResponse", "items" => array() ); foreach(self::$jsonResoponseItems as $item) { + $items = $item->getItems(); $payload["items"][$item->getHtmlId()] = array( "selected" => $item->getValue(), - "items" => $item->getItems() + "items" => array( + "keys" => array_keys($items), + "values" => array_values($items), + ), ); } $response = new JsonResponse($payload); @@ -65,5 +69,5 @@ public static function Container_prototype_addJsonDependentSelectBox(FormContain public static function register($methodName = "addJsonDependentSelectBox") { FormContainer::extensionMethod($methodName, "DependentSelectBox\JsonDependentSelectBox::Container_prototype_addJsonDependentSelectBox"); } - + } diff --git a/src/DependentSelectBox/dependentselectbox.ajax.js b/src/DependentSelectBox/dependentselectbox.ajax.js index 8ebc701..2e600e6 100644 --- a/src/DependentSelectBox/dependentselectbox.ajax.js +++ b/src/DependentSelectBox/dependentselectbox.ajax.js @@ -31,11 +31,12 @@ $.nette.ext('dependentselectbox', { updateSelectBox: function(id, selectedKey, items) { $("#" + id + " option").remove(); var select = $("#" + id); - for (var i in items) { - var item = $("").attr("value", i).html(items[i]); - if (i === selectedKey) + for (var i = 0; i < items.keys.length; i++) { + var key = items.keys[i]; + var item = $("").attr("value", key).html(items.values[i]); + if (key === selectedKey) item.attr("selected", "selected"); - if (i === "") + if (key === "") select.prepend(item); else select.append(item); diff --git a/src/DependentSelectBox/jquery.nette.dependentselectbox.js b/src/DependentSelectBox/jquery.nette.dependentselectbox.js index f49c35f..efbd490 100644 --- a/src/DependentSelectBox/jquery.nette.dependentselectbox.js +++ b/src/DependentSelectBox/jquery.nette.dependentselectbox.js @@ -39,14 +39,15 @@ jQuery.extend({ updateSelectBox: function(id, selectedKey, items) { $("#" + id + " option").remove(); var select = $("#" + id); - for(var i in items) { - var item = $("").attr("value", i).html(items[i]); - if(i == selectedKey) + for (var i = 0; i < items.keys.length; i++) { + var key = items.keys[i]; + var item = $("").attr("value", key).html(items.values[i]); + if (key === selectedKey) item.attr("selected", "selected"); - if(i == "") - select.prepend(item); + if (key === "") + select.prepend(item); else - select.append(item); + select.append(item); } },