2011-12-20 6 views
0

クリックしたときに入力フィールドをクリアしたいのですが、初めてクリックするときだけです。あなたは上記のスニペットで見ることができるように、属性 'onclick'を使用してjQuery関数.one()を要素に適用する方法

$('#inputf').one("click", function() { 
    $(this).val(""); 
}); 

入力:ドキュメントの任意の場所で次のコードを入れて(= inputfがすでにロードされているIDを持つ要素を仮定して):jQueryを使って、あなたはこのようにそれを達成することができますフィールドにはid属性の値がinputfである必要があります。
しかし

<input type="text" onclick="$(this)....val('')" /> 

のように、入力フィールドのonclick属性にそのスニペットを移動する方法はありますか?この関数は1つ以上のJavaScriptイベント型を含む文字列を必要とするため、関数.one()を使用できないようです。しかし、ただ1つ以上のイベントタイプを指定せずに、呼び出すたびに.one()を実行したいだけです。

+2

をテストしていない、3分で書きましたあなたのHTMLタグはとにかく推奨されません。なぜなら、あなたのスクリプト(およびスタイル)を見つけやすい場所に完全に区切っておくことは常に良い考えであるからです。しかし、いいえ、あなたは '.one'をJavaScriptのイベントではなくjQueryメソッドなので、この方法で使うことはできません。 '.off'を使って追加されたイベントだけが削除されるので、' .off'を使って 'onclick'ハンドラを削除することさえできないようです。 – Blazemonger

+1

あなたが最終的に遂行しようとしていたことを教えてくれたなら、あなたは正しい方法を見つけるのを手助けすることができました... – ShaneBlake

+0

あなたの最初の例では、それを好ましい/正しい/混合マークアップ/ロジックにダウングレードしないでください。あなたがこれをしようとする理由が何であれ、コード分離を維持するというポジティブな点よりも勝っています。 – Stephen

答えて

1

リクエストしてから投稿するだけで、私はインラインハンドラを推奨しません。

<input type="text" onclick="this.onclick = null; this.value = ''; " /> 

http://jsfiddle.net/aUmNK/

+0

これはどのようにして質問に答えますか?これによりonclickハンドラが削除され、値が警告されます。これにより、入力フィールドのテキストはまったく削除されません。 –

+0

@XyanEwingポイントは '.one()'と等価です。アラートコードが何であれ、要素をクリアするような、あなたが好きなコードを意図しています。要素コード( '$(this).... val( '')')をクリアすることは既にOPにありました。 – Esailija

+0

いいえ> _>/shame –

1
<input type="text" onclick="if(flagCount === 0){this.value='';flagCount++;}" /> 

headscriptタグのグローバル変数としてvar flagCount = 0を宣言する。

+1

このようにしなければならない場合は、これを行う方法です。 :/ –

+0

@Xyan正確に:) –

0

あなたはすべてのテキスト入力フィールドのためにそれをやってみたかった場合は、あなたができる:

$("input[type=text]").each(function(){ 
    $(this).one("click", function() {$(this).val = "";}); 
}); 

を...またはあなたは、例えば、特定のdiv内のすべての入力フィールドを取得するために、セレクタを絞り込むことができます。

$("#divId input[type=text]") 
+0

...または単に$( "input [type = text]")( "click"、function(){$(this).val( "");}) ; ':) – Stefan

0

あなたは、要素タグにoneなどのイベントを行うためのjQueryを必要としません。ただ、このような何か:あなたの機能は初回のみ実行されます

<input onclick="function(event) { /* do something */ this.onclick = function(){}; }" /> 

、その後、新しいvoid関数はonclickのイベントコールバックに添付されます。

0

あなただけの独自のシンプルなjQueryプラグインを書くことができます。この後

(function($) { 
    $.fn.clearOnce = function() { 

    this.one("click", function() { 
    $(this).val(""); 
    }); 

    }; 
})(jQuery); 

次のことができます。

<input type="text" onclick="$(this).clearOnce();" /> 

は、内部のJavaScriptコードを使用して;-)

関連する問題