diff --git a/src/main/twirl/issues/create.scala.html b/src/main/twirl/issues/create.scala.html index e325611..dcffc7e 100644 --- a/src/main/twirl/issues/create.scala.html +++ b/src/main/twirl/issues/create.scala.html @@ -99,7 +99,7 @@ $('#label-assigned').html($('') .append($('').attr('href', '@path/' + userName).text(userName)) .append(' will be assigned')); - $('a.assign[data-name=' + userName + '] i').attr('class', 'icon-ok'); + $('a.assign[data-name=' + jqSelectorEscape(userName) + '] i').attr('class', 'icon-ok'); } $('input[name=assignedUserName]').val(userName); }); diff --git a/src/main/twirl/issues/issuedetail.scala.html b/src/main/twirl/issues/issuedetail.scala.html index 4eae1ee..ac9101e 100644 --- a/src/main/twirl/issues/issuedetail.scala.html +++ b/src/main/twirl/issues/issuedetail.scala.html @@ -116,7 +116,7 @@ .append($this.find('img.avatar').clone(false)).append(' ') .append($('').attr('href', '@path/' + userName).text(userName)) .append(' is assigned'); - $('a.assign[data-name=' + userName + '] i').attr('class', 'icon-ok'); + $('a.assign[data-name=' + jqSelectorEscape(userName) + '] i').attr('class', 'icon-ok'); } }); }); diff --git a/src/main/webapp/assets/common/js/gitbucket.js b/src/main/webapp/assets/common/js/gitbucket.js index 0a24d4b..94de1c4 100644 --- a/src/main/webapp/assets/common/js/gitbucket.js +++ b/src/main/webapp/assets/common/js/gitbucket.js @@ -102,4 +102,8 @@ contextSize: 4, viewType: 1 })); +} + +function jqSelectorEscape(val) { + return val.replace(/[!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&'); } \ No newline at end of file