
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com> When where are some special characters in html element names, jQuery will not find the element. These characters should be escape. add a escape function in util for it. Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> --- ui/js/src/kimchi.network.js | 16 ++++++++-------- ui/js/src/kimchi.utils.js | 7 +++++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/ui/js/src/kimchi.network.js b/ui/js/src/kimchi.network.js index 7ab7ff9..7bb3f98 100644 --- a/ui/js/src/kimchi.network.js +++ b/ui/js/src/kimchi.network.js @@ -79,7 +79,7 @@ kimchi.getNetworkItemHtml = function(network) { }; kimchi.stopNetwork = function(network,menu) { - $(".network-state", $("#" + network.name)).switchClass("up", "nw-loading"); + $(".network-state", $("#" + kimchi.escapeStr(network.name))).switchClass("up", "nw-loading"); $("[nwAct='stop']", menu).addClass("ui-state-disabled"); kimchi.toggleNetwork(network.name, false, function() { $("[nwAct='start']", menu).removeClass("hide-action-item"); @@ -89,9 +89,9 @@ kimchi.stopNetwork = function(network,menu) { $("[nwAct='delete']", menu).removeClass("ui-state-disabled"); $(":first-child", $("[nwAct='delete']", menu)).removeAttr("disabled"); } - $(".network-state", $("#" + network.name)).switchClass("nw-loading", "down"); + $(".network-state", $("#" + kimchi.escapeStr(network.name))).switchClass("nw-loading", "down"); }, function(err) { - $(".network-state", $("#" + network.name)).switchClass("nw-loading", "up"); + $(".network-state", $("#" + kimchi.escapeStr(network.name))).switchClass("nw-loading", "up"); if (!network.in_use) { $("[nwAct='stop']", menu).removeClass("ui-state-disabled"); } @@ -100,12 +100,12 @@ kimchi.stopNetwork = function(network,menu) { } kimchi.addNetworkActions = function(network) { - $(".menu-container", "#" + network.name).menu(); + $(".menu-container", "#" + kimchi.escapeStr(network.name)).menu(); - $('#' + network.name).on('click', '.menu-container li', function(evt) { + $('#' + kimchi.escapeStr(network.name)).on('click', '.menu-container li', function(evt) { var menu = $(evt.currentTarget).parent(); if ($(evt.currentTarget).attr("nwAct") === "start") { - $(".network-state", $("#" + network.name)).switchClass("down", "nw-loading"); + $(".network-state", $("#" + kimchi.escapeStr(network.name))).switchClass("down", "nw-loading"); $("[nwAct='start']", menu).addClass("ui-state-disabled"); $("[nwAct='delete']", menu).addClass("ui-state-disabled"); $(":first-child", $("[nwAct='delete']", menu)).attr("disabled", true); @@ -117,9 +117,9 @@ kimchi.addNetworkActions = function(network) { if (network.in_use) { $("[nwAct='stop']", menu).addClass("ui-state-disabled"); } - $(".network-state", $("#" + network.name)).switchClass("nw-loading", "up"); + $(".network-state", $("#" + kimchi.escapeStr(network.name))).switchClass("nw-loading", "up"); }, function(err) { - $(".network-state", $("#" + network.name)).switchClass("nw-loading","down"); + $(".network-state", $("#" + kimchi.escapeStr(network.name))).switchClass("nw-loading","down"); $("[nwAct='start']", menu).removeClass("ui-state-disabled"); if (!network.in_use) { $("[nwAct='delete']", menu).removeClass("ui-state-disabled"); diff --git a/ui/js/src/kimchi.utils.js b/ui/js/src/kimchi.utils.js index d1ea105..c7103f8 100644 --- a/ui/js/src/kimchi.utils.js +++ b/ui/js/src/kimchi.utils.js @@ -176,3 +176,10 @@ kimchi.isServer = function(server) { return true; } }; + +kimchi.escapeStr = function(str) { + if (str) + return str.replace(/([ #;?%&,.+*~\\':"!^$[\]()<=>`{|}\/@])/g,'\\$&'); + + return str; +}; -- 1.9.3