2011-12-16 73 views
2

我在這裏有這個簡單的代碼,沒什麼太先進的。event.preventDefault不起作用

$("input#send").submit(function(event){ 
     event.preventDefault(); 
    $.ajax({ 
     type: 'POST', 
     url: add.php, 
     data: data, 
     success: success, 
     dataType: dataType 
    }); 
}); 

Whever我點擊「發送」按鈕,event.preventDefault功能不起作用,並在頁面加載。

任何想法爲什麼?

回答

9

一個形式有提交事件,而不是一個按鈕。另外,一個ID應該是唯一的,所以tag#id只能是#id

$("#theform").submit(function(event) { 
    event.preventDefault(); 
    // ... 
}); 
0

嘗試使用虛假的回報,而不是

$("input#send").submit(function(event) { 
    $.ajax({ 
     type: 'POST', 
     url: add.php, 
     data: data, 
     success: success, 
     dataType: dataType 
    }); 
    return false; 
}); 
+2

應該沒有區別。 – 2011-12-16 21:33:21

+1

在jQuery事件處理程序中`return false`與調用`event.preventDefault(); event.stopPropagation();` – Jasper 2011-12-16 21:35:47

2

我相信提交事件是針對形式元素。對於輸入[type ='button']您可能想要使用click事件。

7

您需要綁定到窗體的submit事件或按鈕的click事件並調用event.preventDefault()如果你想從提交停止形式:

$('form').bind('submit', function (event) { 
    event.preventDefault(); 
}); 

$('form').find(':submit').bind('click', function (event) { 
    event.preventDefault(); 
}); 
1
  1. 添加周圍'add.php'
  2. 更改引號在第一行中選擇包含input#send的表單的id屬性。

處理的形式,而不是輸入的click處理程序上submit()處理器的優點是,某些形式可以通過按回車鍵(當用戶集中在表單字段之一)提交。如果您沒有id屬性,請添加一個或使用其他jQuery選擇器來定位表單標記。

$("#myform").submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     type: 'POST', 
     url: 'add.php', 
     data: data, 
     success: success, 
     dataType: dataType 
    }); 
    return false; 
}); 
0

如果您使用的是preventDefault,我假設這意味着您不需要默認提交操作。我只是使用不同的事件而不是使用.submit。對我而言,這不是您想攔截的提交操作,而是通常會導致提交的點擊。

$('#inputSend').on('click', function(event) { 
    event.preventDefault(); 
    //the rest 
}); 
0

如果同時return falseevent.stopPropagation()不工作,試試下面的方法。使用.on()將使提交功能可訪問。一旦將.submit()更改爲.on("submit"..),您可以使用return falsee.stopPropagation()

$(document).on("submit", "input#send", function(event) { 
    event.stopPropagation(); 
    $.ajax({ 
     type: 'POST', 
     url: add.php, 
     data: data, 
     success: success, 
     dataType: dataType 
    }); 
    return false; }); 
相關問題