浮动占位符

Floating Placeholder

我正在尝试为我页面上的表单实现浮动标签。

我参考了几个来源并在 codepen 和 Fiddle.

中遇到了这个 link

我可以实现这个,但是这些方法需要重新处理所有表单,因为我需要将输入字段包装在 div 或字段集中并添加标签。有没有办法使用 jQuery 并直接定位占位符来做到这一点?

我理解这个问题的水平很高。抱歉。

我这里有一个 jQuery 解决方案 - 它只需要为每个表单元素添加一个 'placeholder="placeHolderTextGoesHere"' 属性。

$("input").each(function(e){

    $(this).wrap('<fieldset></fieldset>');
    var tag = $(this).attr("placeholder");
    $(this).attr("placeholder","");
    $(this).after('<label for="name">'+tag+'</label>');
});

我们正在做的是找到所有输入 - 将它们包装在一个字段集中,然后在之后添加一个标签 - 我们使用占位符标记作为 none-JS 访问者的后备并将其设置为"" 是否允许JS抓取其值后

$("input").each(function(e) {
  $(this).wrap('<fieldset></fieldset>');
  var tag = $(this).attr("placeholder");
  //var tag= $(this).data("tag");
  $(this).attr("placeholder", "");
  $(this).after('<label for="name">' + tag + '</label>');
});

$('input').on('blur', function() {
  if (!$(this).val() == "") {
    $(this).next().addClass('stay');
  } else {
    $(this).next().removeClass('stay');
  }
});
* {
  box-sizing: border-box;
}
body {
  background: #eee;
}
form {
  background: #fff;
  padding: 2em;
  width: 30em;
  margin: 5em auto;
  border-radius: 4px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
}
fieldset {
  border: none;
  position: relative;
  font-family: arial, sans-serif;
}
input {
  width: 20em;
  padding: 1em 1em .8em 1em;
  width: 100%;
  font-size: 1.2em;
  border: 1px solid #aaa;
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, .15);
  border-radius: 2px;
}
input:focus {
  outline: none;
  background: #fbfbe9;
}
input + label {
  display: block;
  cursor: text;
  color: #777;
  transition: .15s ease-out all;
  position: absolute;
  top: 1.8em;
  left: 2.3em;
}
input:focus + label,
label.stay {
  top: 1em;
  left: 3em;
  font-size: .7em;
  font-weight: bold;
  color: #139dd7;
  transition: .15s ease-out all;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
  <input type="text" placeholder="name" name="" id="name" />
  <input type="text" placeholder="email" name="" id="email" />
</form>