2011-09-14 7 views
1

私は、入力フォームをHTMLフォームに追加するためにオンラインで見つけたスクリプトを使用しています。私はそれがすべて働いているが、今コードはランダムに私のCSSをスローしているスタイルのタグが生成されます。このコードは、次のようなスパンタグを生成すると想定されています。javascriptでランダムなスタイルタグを追加するのはなぜですか?

<span id="input-prompt-0" class="input-prompt">Company Name</span> 

すべてのテキスト入力フィールド。代わりに、それは私にこれを与え続けます:

何か考えがありますか?

$(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(); 
     } 
    }); 
    }); 
}); 

答えて

4

ライン$('#input-prompt-' + i).show();スタイルを変更している。

は、ここでは、コードです。 jQuery.showの文書から:

一致する要素は、アニメーションなしですぐに表示されます。 を除いて、表示プロパティが最初のものに復元されていることを除けば、これは.css( 'display'、 'block')を呼び出すのとほぼ同じです。

これは「あなたのCSS」を捨てる理由ですね。

$('#input-prompt-' + i).show(); 

あなたが代わりに使用することができます:

$('#input-prompt-' + i).css("display", ""); 

スパンを示し、スタイル属性を排除する

1

このコード行は、スタイル属性を追加します。

0

問題は、おそらく、.show()と.hide()を使用していることに関連しています。

これらの関数は、要素のスタイルを変更して魔法を実行します。

0

JQueryのshow()およびhide()関数がスタイルを変更しました

関連する問題