【问题标题】:Blur event include submit button too /jquery模糊事件也包括提交按钮/jquery
【发布时间】:2012-04-20 19:00:20
【问题描述】:

当我在输入文本字段之外使用模糊事件时,它包括所有页面,但也包括提交按钮。那么如何避免模糊事件不包含提交按钮呢?

这里是html代码:

<form>
   <input type="text" value="EMAIL ADDRESS_" id="text" />
   <input type="submit" val="" id="submit" />
</form>

和脚本:

$('form input[type!=submit]').focus(function(){
     $(this).val("");
     });
$('form input[type!=submit]').blur(function(){
     if(this.value==""){
     $(this).val("EMAIL ADDRESS_");
  }
});

我从上一个问题中获取此代码,但它不起作用。Blur 事件仍然包括提交按钮

【问题讨论】:

  • 如果您所做的只是更新文本字段中的占位符并且使用 HTML5,则应使用 placeholder 属性,以便指定该文本。

标签: jquery button submit blur


【解决方案1】:

我认为与其避免选择一个字段,不如指定要考虑选择的项目。否则,如果某人/您将来可能会在表单中添加一个新元素,您可能想知道“刚刚添加的元素”的这种行为(模糊和焦点)来自哪里!

$(function(){
 $("form input[type='text']").focus(function(){
       $(this).val("");
     });
 $("form input[type='text']").blur(function(){
     if(this.value==""){
        $(this).val("EMAIL ADDRESS_");
      }
  });
});

请注意,您仍然针对所有文本类型的输入字段。因此,如果可能,请尝试通过将类名应用于这些元素并将其用作选择器来使其更具体。或者您也可以使用元素的 id

$("form #yourElemntId").focus(function(){
   //do stuff
});

【讨论】:

  • 这是我需要的答案,tnx。
  • @user1288338:很高兴它帮助了你。
  • 我觉得这个解决方案也不错: var setTimer = { timer: null } $('input,select').blur(function () { setTimer.timer = setTimeout(function () { $ ('#text').val('text'); }, 200); }); $('input,select').focus(function () { setTimer.timer = setTimeout(function () { $('#text').val(''); }, 200); }); $("#submit").click(function () { clearTimeout(setTimer.timer); //做点什么 });
【解决方案2】:

您的解决方案几乎很好,您只是缺少submit 之间的引号

$("form input[type!='submit']").focus(function(){
     $(this).val("");
     });
$("form input[type!='submit']").blur(function(){
     if(this.value==""){
     $(this).val("EMAIL ADDRESS_");
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2014-02-21
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    相关资源
    最近更新 更多