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);
}
},