在IE9中设置占位符att

时间:2014-02-19 13:21:27

标签: javascript jquery html asp.net

我有以下基于按钮点击运行的代码。

 function ClickYes() {      
      $('#<%=txtMsg.ClientID%>').attr('placeholder', 'Tell me more');
    }

该按钮被声明为以下

<button type="button" class="com-yes-btn2 feedback-btn-grey empx11b12" id="btnYes" onclick="javascript:ClickYes();">

</button>

问题是我需要根据事件动态设置占位符att,在chrome和firefox中行为是正确的,但是在使用IE9时没有添加占位符属性。

如何管理此跨浏览器

由于

4 个答案:

答案 0 :(得分:3)

据我所知,IE9不支持placeholder属性,因此它在ie9中不起作用。

Placehoder attribute not supported in ie9

You can follow this link to see the compatibility on caniuse.com

所以你可以尝试这种解决方法:

function ClickYes() {      
  if(navigator.userAgent.indexOf("MSIE") > 0){
     $('#<%=txtMsg.ClientID%>').val('Tell me more');
  }else{
     $('#<%=txtMsg.ClientID%>').attr('placeholder', 'Tell me more');
  }
}

答案 1 :(得分:3)

IE9不支持placeholder属性,您需要使用blur&amp; focus事件来模拟此功能。

function ClickYes() {

    var element = $('#<%=txtMsg.ClientID%>');

    // default action (on moderns browsers) 
    var placeholder = function() {
        element.attr('placeholder', 'Tell me more');
    };

    if (navigator.appVersion.match(/MSIE [\d.]+/)) {
        // if MSIE: we override this function
        placeholder = function() {
            var placeholderText = 'Tell me more';
            element.val(placeholderText);
            element.blur(function(){
                $(this).val() == '' ? $(this).val(placeholderText) : false;
            });
            element.focus(function(){
                $(this).val() == placeholderText ? $(this).val('') : false;
            });
        };
    };

    placeholder(); // we call the created function
}

来源:placeholder is not working in IE9

答案 2 :(得分:3)

IE 9不支持占位符。但你可以环顾一些像javascript这样的替代方案来轻松实现这个目标

<input type="text" placeholder="test" value="placeholder text" 
onfocus="if (this.value=='placeholder text') this.value = ''" onblur="if (this.value=='') this.value = 'placeholder text'"/>

但是在使用此方法时需要注意,因为此方法会设置value的{​​{1}}。因此,当您检索它时,您将获得该值。因此,无论何时使用它,都需要检查占位符值。

你的功能就像这样

textbox

现在您需要处理function ClickYes() { // for modern browsers $('#txtMsg').attr('placeholder', 'Tell me more'); // for older browsers $('#txtMsg').val('Tell me more'); $('#txtMsg').css('color','#CCC'); } focus事件,以使其完整,就像这样

blur

<强> Js Fiddle Demo

Js Fiddle Demo 2

答案 3 :(得分:1)

我使用place-holder.js,它易于使用: PlaceHolder

你只能通过引用jquery和placeholder.js以及代码

来使用它
$('input, textarea').placeholder();