jQuery多选bug

时间:2013-10-16 15:16:33

标签: jquery

这是一个错误吗? 这个选择有效:

<select id="select_advsels" name="pixel_advsels" multiple>
<option>All</option><option>Mobvista (TS-126)</option>
</select>

jQuery('#select_advsels').val(['Mobvista (TS-126)']);

http://jsfiddle.net/w2xtU/

当OPTION中的两个单词被多个空格分隔时,jQuery无法选择:

<select id="select_advsels" name="pixel_advsels" multiple>
<option>All</option><option>Mobvista  (TS-126)</option>
</select>

jQuery('#select_advsels').val(['Mobvista  (TS-126)']);

http://jsfiddle.net/3FrR7/2/

2 个答案:

答案 0 :(得分:4)

在渲染html时,它会用一个空格替换连续空格:

jQuery('#select_advsels option').each(function(){
    console.log(this.value.replace(' ', '-'));
})

演示:Fiddle

参考this

  

HTML处理空白字符(空格,制表符和换行符)   与普通人物不同。一般来说,只有一个空格   字符 - 包括换行符 - 或一系列空格字符   被视为单个空格和前导/尾随空格   淘汰。这被称为“崩溃空白”。因此   以下两段被视为相同

答案 1 :(得分:1)

正如已经解释的那样,浏览器将多个连续的空白字符折叠到一个空格。如果您绝对需要保留双重空格,请在声明value标记时使用明确的<option>属性:

<option value="Mobvista  (TS-126)">Mobvista  (TS-126)</option>

显示给用户的值只有一个空格,但在使用JavaScript时提交或匹配表单时发送的值将保留多个空格。

Updated jsFiddle