2012-09-20 69 views
3

我想使用preventDefault,以便當表單提交'帳號'作爲輸入的值時,什麼都不會發生。jQuery preventDefault - 不能得到這個工作

對於我所做的所有閱讀,我看不到問題。我懷疑我只是盯着它太久了,錯過了一些非常明顯的東西。幫我準時離開辦公室!的非工作代碼在這裏

例子:http://jsfiddle.net/sX52r/

HTML

<form action="/" id="AccSearch" method="post">        

<input type="text" name="AccountNumber" ID="AccountNumber" class="lookup_field" value="Account number" onfocus="if(this.value=='Account number'){this.value=''}" 
onblur="if(this.value==''){this.value='Account number'}"> 

<input type="image" id="AccSearchSubmit" src="/Images/search.png" onmousedown="this.src='/Images/search_down.png'" onmouseup="this.src='/Images/search.png'" onmouseout="this.src='/Images/search.png'" alt="Submit" /> 

</form> 

JS

$('#AccSearchSubmit').click(function (e) { 
    if ($('#AccountNumber').val == 'Account number') { 
     e.preventDefault(); 
     alert("BOING!"); 
    } 
}); 
+2

不會解決你的問題,但你可能有興趣在[jQuery的水印插件(http://code.google.com/p/jquery-watermark/)。 – jbabey

回答

4

使用提交表單的事件..使用點擊( ) - 您將不得不手動處理輸入按鍵。

$('#AccSearch').submit(function (e) { 
    if ($('#AccountNumber').val() == 'Account number') { 
     e.preventDefault(); 
     alert("BOING!"); 
    } 
}); 

你也失蹤).VAL後括號(

http://jsfiddle.net/sX52r/8/

6

val是一個函數,你應該稱呼它。

if ($('#AccountNumber').val() == 'Account number') { 

working jsFiddle

建議:

  • 這可能是一個更好的主意趕上形式的submit事件代替,因爲在文字輸入按Enter鍵也提交表單爲例。

  • 取而代之的是「脆弱」的解決方案(包括所有的醜陋,突兀內嵌事件處理程序),你應該使用placeholder HTML5屬性(所有現代瀏覽器都支持),以及舊的瀏覽器,使用插件像Mathias Bynens's jquery-placeholder

+0

在提交而不是點擊時這樣做很好 - 這會毫無疑問地引起我的注意。 –

+0

@AlanShortis如果您滿意,請接受我的答案並在左邊打勾(或者其他答案,如果您更喜歡這些答案的話)。 – kapa

0

$('#AccountNumber')。val是函數指針。要使用該值調用如下函數:

$('#AccountNumber').val(); 
1

val是jQuery對象的方法,而不是屬性。更改此:

if ($('#AccountNumber').val == 'Account number') { 

這樣:

if ($('#AccountNumber').val() == 'Account number') { 
//       ^^ invoke the method 
0

我只是想跟進這是我有一點空閒時間,今天和管理,以提高我的原代碼。

我發現在這種情況下使用return false實際上比preventDefault更合適。關於通過按下Enter鍵提交表單的問題還有一個問題,那就是我正在使用的文本框的值。

無論如何,這裏是我的解決方案 - 結果也變得更輕了。

http://jsfiddle.net/sX52r/22/

$('#AccSearch').submit(function() { 
if ($('#AccountNumber').val() == 'Account number' || $('#AccountNumber').val() == '') { 
alert("BOING!");    
return false; 
}});