为什么ie11 javascript在value方法中去掉空格

Why does IE 11 javascript strips spaces in value method?

本文关键字:空格 方法 value ie11 javascript 为什么      更新时间:2023-09-26

当在选择标签中有选项值"ø-&"并在警告中显示所选值时,IE 11(11.0.9600.17126)似乎会剥离空格并将其显示为"ø-&"您知道为什么吗?

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/

这只是因为您正在读取选项的值—但是在值中空格实际上是无效的。相反,您希望读取文本:

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())。

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

Jquery可以解决这个问题。

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

给出正确的结果

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

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