IE11中的保证金问题

时间:2014-04-29 20:15:15

标签: jquery html css dom internet-explorer-11

我有以下代码在加载时为输入元素添加跨度,然后添加事件处理程序以捕获单击和模糊事件,但这不是重点。问题是在IE11中,动态添加的跨度不显示父元素(输入字段)中的左边距,而是在输入的左侧显示它(24px左边距),Firefox 29.0和Chrome 34.0.1847.131显示输入字段中的边距,因此给出一个缩进,将文本跨越输入背景图像。任何想法为什么IE这样做?

负载:

$(document).ready(function(){
  $('input[type=text][title],input[type=password][title],textarea[title]').each(function(i)
  {
    $(this).addClass('input-prompt-' + i);
    var promptSpan = $('<span class="input-prompt"/>');
    $(promptSpan).attr('id', 'input-prompt-' + i);
    $(promptSpan).append($(this).attr('title'));

    $(promptSpan).click(function(){
      $(this).hide();
      $('.' + $(this).attr('id')).focus();
    });

    if($(this).val() != ''){
      $(promptSpan).hide();
    }

    $(this).before(promptSpan);
    $(this).focus(function()
    {
      $('#input-prompt-' + i).hide();
    });

    $(this).blur(function(){
      if($(this).val() == ''){
        $('#input-prompt-' + i).show();
        $('#input-prompt-' + i).css('display', 'inline')
      }
    });
  });
});

HTML:

<p>
<input type="password" title="Password" name="password" id="mPass" />
<div class="notice" id="ePass"></div>
</p>

CSS:

#mPass {
    background:#fff url('../img/pass.png') no-repeat;
    background-position: 4px 9px;
    padding:10px 0px 10px 2em;
}

.input-prompt {
    position: absolute;
    font-style: italic;
    color: #aaa;
    margin: 0.9em 0 0 24px;
    display:inline;
}

1 个答案:

答案 0 :(得分:0)

<div>元素中包含<p>元素无效。这是导致问题的最可能原因。