我有一个选择框
<select>
<option value="">--Select--</option>
<option id="402883273d3fe2bd013d49db55ca0007" value="~`!@#$%^&*()_+-={}|[]\:" title="~`!@#$%^&*()_+-={}|[]\:">~`!@#$%^&*()_+-={}|[]\:</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>
现在当我加载页面并选择值为“〜”的选项!@#$%^&amp; *()_ + - = {} | [] \:“ 它没有被选中。
选择代码是:
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”..它的工作正常
答案 0 :(得分:1)
您可以使用此solution:
// Escapes special characters and returns a valid jQuery selector
function jqSelector(str)
{
return str.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
}
答案 1 :(得分:1)
而不是值取代ID ..即在ID的基础上选择..所以使用此jQuery("#clauseCategory_ option[id='"+selectedCategory+"']").attr("selected", "selected");