2011-07-27 10 views
0

placeholder属性をサポートしていないブラウザではフォールバックをコーディングしています。 IE6を除くすべてのブラウザで完璧に動作します。IE6 JavaScriptの問題 - フィールドにテキストを入力できません

2つのフィールドのいずれかに注目した後、プレースホルダテキストが期待通りに消えますが、フィールドにテキストを入力または貼り付けることはできません!時には「エラー84 - 未指定のエラー」が発生することがありますが、ほとんどの場合、エラーはまったくありません。

私はこれは本当に私はIE6の私のコピーであることを考えるように始めているポイントに、狂気私を運転している(コードは以下のもある)、それで問題のコードはhttp://jsfiddle.net/CMWHx/で最も単純な形だ

をアップロードしましたあなたがIE6のコピーを持っている人ならすぐに上記のリンクをチェックして、あなたと同じ問題が発生していることを確認できたら、私は感謝しています。事前に

感謝:)

HTML

<input id="email_input" type="email" placeholder="Email" required="required" /> 
<input id="password_input" type="password" placeholder="Password" required="required" /> 

はJavaScript(jQueryの1.6.2)

$("#email_input").val("Email").focus(function() { 
    if ($(this).val() == "Email") 
    { 
     $(this).val(""); 
    } 
}).blur(function() { 
    if ($(this).val() == "") 
    { 
     $(this).val("Email"); 
    } 
}); 

$("#password_input").hide().after("<input id=\"password_placeholder\" value=\"Password\" />").blur(function() { 
    if ($(this).val() == "") 
    { 
     $(this).hide(); 
     $("#password_placeholder").show(); 
    } 
}); 
$("#password_placeholder").focus(function() { 
    $(this).hide(); 
    $("#password_input").show().focus(); 
}); 
+4

ライブリンクは質問の素晴らしい*補助*ですが、常に関連するコード*を質問にも載せています*。 2つの理由。 1.人々はあなたを助けるためにリンクをたどる必要はありません。 2. StackOverflowはあなただけのためのものではなく、今後同様の問題を抱える人のためのものです。外部リンクは、移動、変更、削除される可能性があります。関連するコードが問題になっていることを確認することによって、質問(およびその回答)が合理的な期間有効であることを保証します。 –

+0

@T。 J.Crowder - コメントありがとう、投稿にコードを追加しました – chigley

答えて

0

古いXenocodeサンドボックスIE(ページロード時のエラー84を含む)を介してIE6を実行しているWindows 7 VMで説明したのと同様の問題が発生しました。

しかし、私はWindows XPのVMをネイティブで更新されていないIE6で起動しました。エラーは発生せず、コードは正常に動作します。

ここであなたは大丈夫だと思います。

1

あなたのいずれかの場合、私はそれを感謝しますIE6のコピーで上記のリンクをすぐにチェックすることができますあなたが私と同じ問題を経験していることを確認してください。

IE6のフィールドに入力できます。偽のプレースホルダが消えて、マウスでフォーカスしたときとキーボードでタブを移動したときの両方で、私が入力したものが表示されます。

0

これをIE6でIETesterでテストしたところ、正しく機能しているようです。フィールドの値は、前後にクリックした後に保持され、入力できました。

0

あなたの問題とは無関係ですが、ヒントとして、入力にデフォルト値を指定して、現在の値をデフォルト値(例:

<input value="email" 
onfocus="if (this.value == this.defaultValue) this.value = '';" 
onblur="if (this.value == '') this.value = this.defaultValue;" 
... > 

もちろん、あなたはそれを実装することができますが、上記は戦略を示しています。

+0

これはtype = "password"を除くすべてのフィールドで機能します。これらのフィールドでは、デフォルトのテキストがドットとして表示されますが、これは意図した動作ではありません。パスワードフィールドの場合は、上記のように入力要素を入れ替える必要があります。 – threejeez

関連する問題