2012-04-20 88 views
1

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

下面是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_"); 
    } 
}); 

我从我刚才的问题这段代码,但它不work.Blur事件仍然包括提交按钮

+1

之间的报价。如果你正在做的是在文本字段更新占位符,如果你使用的是HTML5,你应该使用'placeholder'属性用于指定文本。 – jasonmerino 2012-04-20 19:05:52

回答

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 
}); 
+0

这是我需要的答案,tnx。 – user1288338 2012-04-20 19:14:01

+0

@ user1288338:很高兴帮助你。 – Shyju 2012-04-20 19:16:08

+0

我觉得这个解决方案也不错: VAR的SetTimer = {定时器:空} $( '输入,选择'),模糊(函数(){ setTimer.timer = setTimeout的(函数(){ $(” #text')。val('text'); },200); }); $( '输入,选择')聚焦(函数(){ setTimer.timer = setTimeout的(函数(){ $( '#文本')VAL( ''); },200); }); (“#submit”)。click(function(){clearThread(setTimer.timer); // do something }); – user1288338 2012-04-21 16:53:05

0

你的解决方案是差不多好了,你只是缺少submit

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

tnx,我很感谢你的回答 – user1288338 2012-06-29 13:05:46