2011-12-20 53 views
0

我想清除一個輸入字段,當它被點擊時,但只有第一次點擊。使用jQuery,就可以實現這樣的:把下面的代碼片段的任何地方文檔中(假設有ID的元素= inputf已經加載):如何應用jQuery函數.one()通過屬性'onclick'

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

正如你可以在上面的代碼片段看到,輸入字段必須具有id屬性,值爲inputf
但有以移動片段輸入字段的onclick屬性的方法,像

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

?它看起來像我不能使用函數.one(),因爲該函數需要一個包含一個或多個JavaScript事件類型的字符串。但我只希望.one()在每次調用時都被執行,而不指定一個或多個事件類型。

+2

內用JavaScript代碼無論如何,你的HTML標籤是不鼓勵的,因爲它總是一個好主意,讓你的腳本(和樣式)完全分開,很容易找到。但不,你不能這樣使用'.one',因爲它是一個jQuery方法,而不是JavaScript事件。它不會出現,你甚至可以使用'.off'去除'onclick'處理程序,因爲它只能刪除使用'.on'添加的事件。 – Blazemonger 2011-12-20 14:39:06

+1

也許如果你告訴我們你最終想要實現的目標,我們可以幫助你找到正確的方法來使用... – ShaneBlake 2011-12-20 14:41:40

+0

在第一個例子中,你正在做它的首選/正確/最簡單/最聰明的方式。不要降級到混合標記/邏輯。無論出於何種理由試圖做到這一點,都會被維護代碼分離的積極因素所抵消。 – Stephen 2011-12-20 14:43:30

回答

1

只有在您提出要求的情況下發布此信息,我不會主張聯機處理程序。

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

http://jsfiddle.net/aUmNK/

+0

這是如何回答這個問題的?這剝離了onclick處理程序並提醒該值。這不會在輸入字段中刪除文本。 – 2011-12-20 15:19:27

+0

@XyanEwing重點是它等同於'.one()'。無論警報代碼是什麼,都意味着您喜歡的任何代碼,例如清除元素。清除元素代碼('$(this).... val('')')已經在OP中。 – Esailija 2011-12-20 15:22:45

+0

不,它不是> _> /羞恥 – 2011-12-20 15:24:11

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

聲明var flagCount = 0如在headscript標籤全局變量。

+1

如果你必須這樣做,這是做到這一點的方法。 :/ – 2011-12-20 14:51:40

+0

@Xyan正是:) – 2011-12-20 15:07:32

0

如果你想這樣做對所有的文本輸入框,你可以這樣做:

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

...或者你可以細化選擇,以獲得在例如特定的div每個輸入字段:

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

...或者只是'$(「input [type = text]」)。one(「click」,function(){$(this).val(「」);}) ;':) – Stefan 2011-12-20 14:52:34

0

你不需要的jQuery做類似事件的one元素標籤上。剛做這樣的事情:

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

您的功能將僅在第一時間,然後一個新的空白功能將被附加到onclick事件的回調執行。

0

你可以只寫自己的簡單的jQuery插件:

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

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

    }; 
})(jQuery); 

在此之後,您可以:

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

中寫道3分鐘,沒有測試;-)