2014-07-02 28 views
0

当选择标签中的选项值为“ø-&”并在警报中显示选定的值时,IE 11(11.0.9600.17126)似乎会去掉空格并将其显示为“ø-&”您知道为什么吗?为什么IE 11的javascript剥离空间值的方法?

HTML:

<select id="companies"> 
     <option>ø- &</option> 
     <option>ø- &amp;</option> 
     <option>&oslash;- &amp;</option> 
</select> 
<button onclick="javascript:alert(document.getElementById('companies').value);">TEST</button> 

的jsfiddle:http://jsfiddle.net/aK35t/14/

回答

0

那只是因为你正在阅读的选项的值 - 但空间是不是里面的值确实有效。相反,你想要阅读的文本

document.getElementById('companies') 
.options[document.getElementById('companies').selectedIndex].text 

但是,你不应该依赖于自动“文本价值”反正。如果手动设置选项的值,它会正常工作与你的原代码,以及:

<select id="companies"> 
    <option value="ø- &amp;">ø- &amp;</option> 
</select> 
<button onclick="alert(document.getElementById('companies').value);">GET</button> 

你很可能已经在期权价值的一些ID反正,虽然 - 所以,如果你想获得javascript中的文本,使用上面的代码片段(或使用jQuery的text())。

+1

谢谢,这解决了这个问题! – kasperxb

+0

使用'value'属性确实解决了这个问题,但是空格*是*有效的,并且它是IE 11中的一个错误(例如在IE 10中不存在),它们被剥离(当构造'option'的'value'属性时从内容来看,没有“价值”属性)。 –

+0

IE 11的错误似乎取决于'option'值中是否存在非ASCII数据,请参阅错误报告[IE11 option.value在值包含HTML扩展字符时返回错位的数据](http://connect.microsoft的.com/IE /反馈/信息/ 888189/IE11选项 - 值返回-受到损坏的数据-时 - 值包含-HTML的扩展字符)。 –

0

的问题似乎在于您的多字节字符(O,℃)。也许你可以强制网页使用utf8编码?

Jquery以某种方式修复了这个问题。

function getCompaniesValue() { 
    alert($("#companies").val()); 
} 

给出正确的结果。

+0

已经尝试使用不工作的utf8。我曾试着用jQuery 1.7.1不起作用。你使用什么版本? – kasperxb

+0

@kasperxb:使用Jquery 1.11。小提琴更新:http://jsfiddle.net/aK35t/15/ –

0

我没有IE 11来测试,但对我来说,它似乎是一个编码问题。你应该尝试使用正确的HTML实体做到这一点:

<select id="companies"> 
    <option>&oslash;- &amp;</option> 
    <option>&oslash;- &</option> 
</select> 
<button onclick="javascript:alert(document.getElementById('companies').value);">TEST</button> 
+0

试过&oslash;但是不工作!更新了jsfiddle。 – kasperxb