簡體   English   中英

jQuery preventDefault - 無法使這個工作

[英]jQuery preventDefault - cannot get this working

我正在嘗試使用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!");
    }
});

val是一個函數,你應該調用它。

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

工作的jsFiddle

建議:

  • 相反,捕獲表單的提交事件可能是一個更好的主意,因為在文本輸入中按Enter鍵也會提交表單。

  • 您應該使用placeholder HTML5屬性(所有現代瀏覽器都支持它)而不是舊的瀏覽器, 而是使用像Mathias Bynens的jquery-placeholder這樣的插件,而不是這個“脆弱”的解決方案(使用所有丑陋,突兀的內聯事件處理程序)。

使用表單的提交事件..使用click() - 您必須手動處理按Enter鍵。

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

你也錯過了.val()之后的括號

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

val是jQuery對象的方法,而不是屬性。 改變這個:

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

對此:

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

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

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

我只想跟進這一點,因為我今天有一點空閑時間,並設法改進我的原始代碼。

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

無論如何,這是我的解決方案 - 結果也變得相當輕松。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM