2010-04-21 109 views
1

我的页面上有一个按钮标签,并带有一个值。Jquery Apache - IE问题

<button class='btn' value='value'>show value</button> 

我有这样的jQuery代码:

$('.btn').click(function() { 
    var w = 'value = '+$(this).val()+'/text = '+$(this).html(); 
    alert(w); 
}); 

在FF,没有问题的结果是OK(显示:值=值/文本=显示值)。
问题出现在IE8中,它显示了我的测试服务器和生产服务器的不同结果。 测试服务器是具有标准XAMPP安装的本地机器。生产服务器是基于Linux的服务器,使用apache,php和mysql。

测试服务器的结果正常(显示为FF),生产服务器的结果不好(显示:value = show value/text:show value)。

任何想法,如果它是导致错误的Apache?我知道使用val()有一些问题,因为IE将它视为属性而不是值。

问题是,将jQuery从val()更改为attr('value')会退出很多工作(此实现已经在很多页面上),我认为可以更容易地更改某些内容在网络服务器上。

+1

这是IE的一个已知问题,请看这个http://www.w3schools.com/tags/tag_button.asp – Lazarus 2010-04-21 14:37:26

回答

0

这是IE已知的客户端问题,我无法充分解释服务器之间的差异,其他可以说确保您使用相同的浏览器和版本进行测试。

From W3C:

重要:如果您在HTML表单中使用按钮元素,不同的浏览器将提交不同的值。 Internet Explorer将提交<button></button>标记之间的文本,而其他浏览器将提交value属性的内容。使用输入元素在HTML表单中创建按钮。

获得一致的行为,最简单的方法(从.attr('value')不谈,我强烈推荐)从此是更换您的按钮:

<input type="submit" class='btn' value='value' /> 

不幸的是这不会给你的显示器值,但是如果你有一个代理按钮,你可以得到的按钮同样的效果,这是混乱的,但它使IE工作:

<input type="button" class='btnPoxy' value='show value' /> 
<input type="submit" class='btn' value='value' style='display: none;' /> 

的jQuery为此:

$(".btnProxy").click(function() { 
    $(this).next(".btn").click(); 
});