如何通过属性'onclick'将jQuery函数.one()应用于元素

时间:2011-12-20 14:36:31

标签: javascript jquery

我希望在单击时清除输入字段,但仅在您第一次单击时清除。使用jQuery,您可以像这样实现:将以下代码段放在文档中的任何位置(假设已加载了id = inputf的元素):

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

正如您在上面的代码段中所看到的,输入字段必须具有值为id的{​​{1}}属性。
但有没有办法将该代码段移动到输入字段的inputf属性,如

onclick

?看起来我不能使用函数<input type="text" onclick="$(this)....val('')" /> ,因为该函数需要一个包含一个或多个JavaScript事件类型的字符串。但我只想在每次调用时执行.one(),而不指定一个或多个事件类型。

5 个答案:

答案 0 :(得分:1)

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

var flagCount = 0声明为scripthead标记中的全局变量。

答案 1 :(得分:1)

仅在您请求后发布此内容,我不提倡内联处理程序。

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

http://jsfiddle.net/aUmNK/

答案 2 :(得分:0)

如果您想对所有文本输入字段执行此操作,则可以执行以下操作:

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

...或者您可以优化选择器以获取特定div中的每个输入字段,例如:

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

答案 3 :(得分:0)

您不需要jQuery在元素标记上执行one之类的事件。做这样的事情:

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

您的函数将仅在第一次执行,然后新的void函数将附加到onclick事件回调。

答案 4 :(得分:0)

你可以编写自己的简单jQuery插件:

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

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

  };
})( jQuery );

在此之后你可以:

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

在3分钟内写完,未经测试; - )