[英]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()之后的括號
val
是jQuery對象的方法,而不是屬性。 改變這個:
if ($('#AccountNumber').val == 'Account number') {
對此:
if ($('#AccountNumber').val() == 'Account number') {
// ^^ invoke the method
$('#AccountNumber')。val是函數指針。 要使用該值,請調用以下函數:
$('#AccountNumber').val();
我只想跟進這一點,因為我今天有一點空閑時間,並設法改進我的原始代碼。
我發現在這種情況下使用return false實際上比preventDefault更合適。 通過按Enter鍵提交表單也存在一個問題,這個問題低於我正在使用的文本框的值。
無論如何,這是我的解決方案 - 結果也變得相當輕松。
$('#AccSearch').submit(function () {
if ($('#AccountNumber').val() == 'Account number' || $('#AccountNumber').val() == '') {
alert("BOING!");
return false;
}});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.