有没有我可以使用的 js 函数来使占位符属性在 IE 中工作? [复制]

Posted

技术标签:

【中文标题】有没有我可以使用的 js 函数来使占位符属性在 IE 中工作? [复制]【英文标题】:Is there a js function I could use that would make the placeholder attribute work in IE? [duplicate] 【发布时间】:2013-07-27 08:17:42 【问题描述】:

现在我的项目中有一堆使用占位符的输入标签,如下所示:

<input id="Name" name="Name" placeholder="Name Goes Here" type="text" value="">

如果浏览器是 IE,我可以在全局 js 脚本中放置一个 js 函数来更改输入标签吗?

例如,如果浏览器是 Internet Explorer,我可以运行一个特定的 javascript 函数,将我的所有占位符更改为 IE 使用的东西(如果它存在的话)

【问题讨论】:

IE10 支持占位符属性。在低级版本中,您需要像 falinsky 建议的那样使用 shim。 【参考方案1】:
// Detect the browser, as you want. I'm using the follwowing way
var browserName=navigator.appName; 
if (browserName=="Microsoft Internet Explorer") 
 
    replacePlHolders();



// replace all the placeholders with a simple text input
function replacePlHolders()

   var plInps = $("input[placeholder]");

   plInps.each(function()
        var name=$(this).attr("name");
        var newInput = $("<input type='text' name='"+name+"' value='"+name+" goes here'>");

         $(this).replaceWith(newInput);
         var defaultValue = name + " goes here";

         newInput.on('focus', function()                  

                    // If this value of the input equals our sample,
                    // hide it when the user clicks on it.

                    if(this.value === defaultValue)
                       this.value = '';
              );

              newInput.on('blur', function() 
                    // When they click off of the input, if
                    // the value is blank, bring back the sample.
                    if(this.value === '')
                         this.value = defaultValue;
               );
   );

将此代码放在您的全局 Javascript 文件中,这将为您带来神奇的效果。

检查小提琴here

【讨论】:

【参考方案2】:

请查看jquery-html5-placeholder-shim

【讨论】:

效果很好。 我使用了你给我的插件,它可以工作。但是,当我导航到其他页面时,它会停止工作。有没有办法让我点击的每个页面都运行这个插件?谢谢 你应该在每个页面上都包含这个插件...【参考方案3】:
if(!Modernizr.input.placeholder)
    $('[placeholder]').focus(function()
        var input = $(this);
        if(input.val() == input.attr('placeholder'))
            input.val('');
            input.removeClass('placeholder');
        
    ).blur(function()
        var input = $(this);
        if(input.val() == '' || input.val() == input.attr('placeholder'))
            input.addClass('placeholder');
            input.val(input.attr('placeholder'));
        
    ).blur();
    $('[placeholder]').parents('form').submit(function()
        $(this).find('[placeholder]').each(function()
            var input = $(this);
            if(input.val() == input.attr('placeholder'))
                input.val('');
            
        );
    );

【讨论】:

以上是关于有没有我可以使用的 js 函数来使占位符属性在 IE 中工作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python sqlite3 占位符

如何删除焦点上的占位符[重复]

使用 Spring 从属性文件加载嵌套占位符

更改占位符的 css 属性

为啥 UITextview 没有 UITextField 之类的占位符属性 [重复]

如何在 Next.js 中添加自定义图像占位符?