1

基本的にテキストボックスに事前入力する以下のjqueryがあります。(実際には、テキスト ボックスの上にスパンが配置され、テキスト ボックスの上に配置されます。次に、スパンをクリックすると、それが非表示になり、テキスト ボックスにフォーカスが置かれます。)値をフォーム フィールドに入力するため、ユーザーが送信しても、入力された値は送信されません。現在、これは機能しているようですが、問題は、ページ上のテキスト ボックスについて、この機能をすべて事前に設定された異なる値で実現したいことです。このスケールを作成する方法を見つけようとしているので、基本的に 1 つの関数だけが必要です。テキスト ボックスの ID に応じて、上のスパンに異なるデータが入力されます。どんな助けでも素晴らしいでしょう!

1 つのテキスト ボックスに対してのみ動作する jquery コード: (テキスト ボックスごとにこの関数を何度も何度も書きたくありません。

if($("#workphone").val().length == 0)
{
    var overlayCellPhone = $("<span class='prepopulation'>1234567890</span>");
    $("#workphone").parent().prepend(overlayCellPhone);


    $(".prepopulation").click(function(){
        $("#workphone").focus()
        $(".prepopulation").hide();
    });

    $("#workphone").blur(function(){
        if($("#workphone").val().length == 0)
        {
            $(".prepopulation").show();
        }

    });
}
4

2 に答える 2

2

HTML5 では、次のように指定して、入力フィールドのプレースホルダー テキストを設定できます。

<input name="lol" placeholder="1234567890">

その後、jQuery プラグインplaceholderを使用して、古いブラウザーで sを有効にします。

于 2011-02-16T15:49:02.760 に答える
0

次のようになります。

var holders = {
  "phone": "1234567890",
  "email": "address@domain.com"
  };
$(":text").each(function(){
  var id = this.id, $input = $(this);
  if(typeof holders[id] != 'undefined') {
    var $holder = $("<span class='prepopulation'>" + holders[id] + "</span>");
    if ($input.val().length != 0) $holder.hide();
    $input.parent().prepend($holder);
    $holder.click(function(){
      $input.focus()
      $holder.hide();
    });
    $input.blur(function(){
      if($input.val().length == 0) {
        $holder.show();
      }
    });
  }
});
于 2011-02-16T15:34:56.993 に答える