在IE10中通过jQuery在Textarea上的HTML5占位符属性

时间:2012-12-07 14:02:59

标签: jquery html5 textarea placeholder internet-explorer-10

我想知道Internet Explorer 10中的一些奇怪的行为。 在我的页面上,我添加了一个带有jquery的textarea,包括一个占位符属性。像这样:

$('body').append($('<textarea placeholder="Placeholder..."></textarea>'));

占位符属性通常在IE10中运行得很好......除了这种情况。我用这个小提琴中的元素已经测试了它:

http://jsfiddle.net/Aqnt5/1/

正如您所看到的,一个textarea(动态添加的一个)将占位符属性视为实际值 - 我能想象的最烦人的行为......

有谁知道这种效果,也许还有一种解决方法?提前谢谢!

修改

我也意识到,在您手动删除值后,它会按预期工作。您也可以通过jQuery.val('')将其删除,以使其正常运行。我对这种行为感到很困惑......但这应该是一个合适的“解决方法”。 看到这个小提琴:http://jsfiddle.net/Aqnt5/5/

4 个答案:

答案 0 :(得分:18)

不幸的是我没有IE10来测试它,但是这在其他地方都可以使用;

$('body').append('<textarea></textarea>');
$('textarea').attr('placeholder', 'placeholder');

只需仔细检查您的DOCTYPE是否适用于HTML5

这是一个单行(在这里分成几行以使其更加明显),您也可以这样做 -

$('body')
    .append('<textarea></textarea>')
    .find('textarea')
    .attr('placeholder', 'placeholder');

答案 1 :(得分:3)

小提琴:http://jsfiddle.net/Aqnt5/5/

您可以使用jQuery删除该值,以使其行为正确:

$('body').append($('<textarea placeholder="Placeholder..."></textarea>').val(''));

我不知道为什么他们首先将占位符作为值...

答案 2 :(得分:0)

使用jQuery 1.8.3时,我发现同样的事情:http://jsfiddle.net/wE577/1/

但如果您使用的版本高于此版本,问题就会消失:http://jsfiddle.net/wE577/2/

我不清楚jQuery导致此错误的方式,但更新修复了它。

答案 3 :(得分:-1)

placeholder是HTML5的保留属性, 由于HTML5尚未定义(并且可能会发生更改), 然后并非所有浏览器都支持所有功能(并且不要让我开始关于IE)

供参考: http://www.w3schools.com/html5/att_textarea_placeholder.asp