2012-04-20 64 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