如何在 focusout 中为表单中的所有字段添加占位符?

How to add placeholder while focusout for all the fields in form?

$('*').focus(function(){
$(this).removeAttr("placeholder");
});

这用于我表单中的所有字段。但是我找不到如何添加。

$('*').focusout(function(){
$(this).attr("placeholder","abc"); 
} 

这用于单个字段,但我需要所有字段,如隐藏和显示

不是很优化,但可以工作

$('*:input').each(function(){
$(this).data('placeholder',$(this).attr("placeholder"))
$(this).removeAttr("placeholder");
$(this).on('focus', function(){
 $(this).attr("placeholder", $(this).data('placeholder'));
});
$(this).on('focusout', function(){
 $(this).removeAttr("placeholder");
});
});

看看这个 JSFiddle 例子,当你 focusout 任何 field 时,placeholder 所有输入更改。

<form id="form">
  <p>Form</p>
  <p><input/></p>
  <p>
    <select>
      <option id="selectPlaceholder"></option>
      <option>Option 1</option>
      <option>Option 2</option>
      <option>Option 3</option>
    </select>
  </p>
  <p><textarea></textarea></p>
  <p>
    <button id="reset" type="button">Reset placeholder</button>
  </p>
</form>

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#form {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  font-size: 25px;
  text-align: center;
  margin: 0 auto;
  width: 300px;
}

input, select, textarea {
  width: 90%;
  text-align: center;
}

button {
  background: #0084ff;
  border: none;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

$("input, select, textarea").focusout(function(){

    $("input, select, textarea").attr(
        'placeholder',
        'Text for the placeholder focusout'
    )
    $("#selectPlaceholder").html('Text for the placeholder focusout');

});

$('#reset').click(function(){
    $('input, select, textarea').removeAttr('placeholder');
    $('#selectPlaceholder').html('');
});