1

我有一个选择框

<select>
<option value="">--Select--</option>
<option id="402883273d3fe2bd013d49db55ca0007" value="~`!@#$%^&*()_+-={}|[]\:" title="~`!@#$%^&*()_+-={}|[]\:">~`!@#$%^&amp;*()_+-={}|[]\:</option>
<option id="402883273b660e71013b6ff04187000d" value="asdasd" title="asdasd">asdasd</option>
<option id="402883273952e67f01395332fd5f0006" value="CC-1" title="CC-1">CC-1</option>
<option id="402883273bdb9824013c14d3c2c30007" value="rto" title="rto">rto</option>
<option id="402883273bdb9824013c14d5decf0008" value="xc" title="xc">xc</option>
</select>

现在,当我加载页面并选择 value = "~`!@#$%^&*()_+-={}|[]\:" 的选项时,它没有被选中。

选择代码是:

var selectedCategory = "<%=StringEscapeUtils.escapeJavaScript(toEditClause.getClauseGroup().getClauseCategory().getName())%>";
        console.log("before : "+selectedCategory);
        selectedCategory = selectedCategory.replace(/'/g,"\\'");
        console.log("After : "+selectedCategory);
        jQuery("#clauseCategory_ option[value='"+selectedCategory+"']").attr("selected", "selected");

我认为问题是由于特殊字符造成的,否则如果我选择其他值,例如:“CC-1”.. 它工作正常

4

2 回答 2

1

而不是价值去的ID ..即选择ID ..的基础上所以使用这个jQuery("#clauseCategory_ option[id='"+selectedCategory+"']").attr("selected", "selected");

于 2013-05-29T09:38:40.383 回答
1

您可以使用此解决方案

// Escapes special characters and returns a valid jQuery selector
function jqSelector(str)
{
    return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
}
于 2013-05-29T09:36:51.063 回答