1

IE は、入力要素のプレースホルダーをサポートしていません。jqueryの回避策を使用しようとしています

私が欲しいのは、ページの読み込み時にフィールド値 sld が初期化されることです。私はフィールドフォーカスで行うことができます。たとえば。これは動作します

  // ThiS Works on focus, "Email" is shown in text box
$(function() {
  $("#login_email").focus(function()
  {
      if ($(this).val() == "")
      {
          $(this).val("Email");
      }
  });
});

  // I hoped that this will intialize on page load. But this does not work ???
  // This does not work

$(function() {
  $("#login_email").val("Email");
});

どうすればこれを修正できますか?

オプション 2 が機能しないのに、オプション 1 が機能するのはなぜですか? 違いはなんですか??

4

3 に答える 3

0

私はこれをやってしまった:

  $("#login_email, #login_password").blur(function() {
    var input = $(this);
    if (input.val() == '') {
      input.addClass("placeholder");
      input.val(input.attr("placeholder"));
    }
  })
  // This is needed at the time of page load. There is
  // potential race condition happening here.
  setTimeout(function() {
    $("#login_email, #login_password").each(function() {
      var input = $(this);
      if (input.val() == '') {
        input.addClass("placeholder");
        input.val(input.attr("placeholder"));
      }
    })
  }, 50);
于 2013-08-06T20:50:18.147 に答える
0

このアプローチを提案できますか

Javascript

$(function() {
    $("#login_email").val($("#login_email").attr("placeholder"));

    $("#login_email").on("focus", function() {
      var elem = $(this);
      if (elem.val() == "") {
          elem.val(elem.attr("placeholder"));
      } else if(elem.val() == elem.attr("placeholder")) {
          elem.val("");
      }
    });

    $("#login_email").on("blur", function() {
      var elem = $(this);
      if (elem.val() == "") {
          elem.val(elem.attr("placeholder"));
      }
    });
});

html

<input type="text" id="login_email" placeholder="Email">

このように、より再利用可能です。
詳細については、JsFiddle を参照してください: http://jsfiddle.net/SUdbs/

于 2013-08-06T20:14:27.550 に答える
0
$(".#login_email").val("Email")
    .focus(function(){
        if($(this).val() == "Email"){
            $(this).val("");
        }
    })
    .blur(function(){
        if($(this).val().length == 0){
            $(this).val("Email");
        }
    });

これにより、プレースホルダーのような入力が得られます。プレースホルダーが消えるのではなく、焦点を合わせてフェードアウトする方法が好きですが、コードの肥大化を大幅に削減するために、これはあなたにとって良いかもしれません.

于 2013-08-06T20:14:56.120 に答える