2009-06-27 15 views
1

(私はそれをまとめるために大変だった、私のタイトルは分かりやすい願っています。)Jqueryでフォームテキストを変更する方法

あなたがここに見ることができるように私は、選択したラジオボタンに応じて、フォーム内のテキストを変更するいくつかのスクリプトを持っている: http://jsbin.com/onowu/

問題は、あるユーザが何らかのテキストを入力してから他のラジオボタンをクリックすると、テキストが削除されるということです。

私が探しているのは、ユーザーによって塗りつぶされたテキストがない場合にのみ灰色のテキストを変更する方法です。ユーザーがテキストを削除すると、選択したラジオボタンに応じてテキストが空白で埋められます。入力がクラス「ヒント」を持っているかどうかを確認するために http://jsbin.com/onowu/edit

答えて

5

チェック:あなたは私のここでのコードを見ることができます

。テキストのみを変更します。

全例:

$(document).ready(function() { 
    function setText(){ 
     var kf = this.title.split('|'); 
     if (kf.length < 0) return; 
     if($('#' + this.name + '_text').hasClass('hint')){ 
      $('#' + this.name + '_text').val(kf[0]).addClass('hint'); 
     } 
     $('#' + this.name + '_text').attr('title', kf[0]); 
    } 

    $("input[type='text']").inputdynvalue(); 
    $("input[type='radio']").click(setText); 
}); 

これは、クラス「ヒント」の入力テキストボックスをチェックし、それが発見された値のみを変更することで動作します。 "Jonathan Sampsonのコメントで述べたように" .focus()イベントは "ヒント"クラスを削除し、.blur()イベントはテキストが提供されていなければ再び追加します。 "

また、コードをW3Cが提供するhtml validation serviceで実行します。有効なコードがないと、JavaScriptが面白くなる可能性があります。 (さらに、誰もが有効なhtmlを書いてください)

また、あなたのコードにjQueryを2回追加していることに気づいたので、そのうちの1つを削除することをお勧めします。


更新日(2009年7月10日):以下のコメントに記載されている不具合を修正しました。

+1

++ |さらに、.focus()イベントはクラス "hint"を削除し、.blur()イベントはテキストが提供されていなければ再度追加します。ちょうどMitMaroの答えは完全にはっきりしていなかった。 – Sampson

+0

良い点ジョナサン、私はそれらを言及すべきだった。ありがとう – MitMaro

+0

lr_textは最初のフォームでしか動作しませんが、私はいくつか私のページ(与えられた例で2つしかありませんでしたが、それ以上持っています)で何かを試したので $( '#' + this.name + '_text') しかし、それは動作しませんでした。 – Mark

関連する問題