2012-12-20 49 views
-1

我有一個表格現在,我想,以防止實際工作發送形式是像這樣的OnClick繞過表單提交

<form id= 'lol' name = 'whyyyyy'> 
<input name='dumbo'> 
<input name='idiot'> 

<input type='submit' value='i have no idea why he done it like this' onclick='document.lol.submit()'> 
</form> 

作出dumbnes,但至今所有努力都失敗了。

我的curent代碼看起來像這樣。

$(document).ready(function(){ 
    $('form[name="whyyyyy"]').submit(function(e){ 
     e.preventDefault(); 
     alert(1); 
     return false; 
    }); 
}) 

但內聯提交命令繞過,因爲它似乎是jQuery功能。

有人可以把光切入它嗎?

編輯:

  1. 形式不能改變的,我沒有權限更改。
  2. 點擊代碼應該觸發提交功能,它在代碼中有一些複雜的驗證牆。所以我必須緩解他觸發的提交行爲,但我不能在那時做到這一點。
  3. 提交函數應在發送時觸發,但不會觸發。

以下是jfiddle中的代碼示例。你可以看到它得到的jQuery過去......

http://jsfiddle.net/StCPp/4/

+0

單引號如何,您應該使用雙引號來包裝屬性值 – PhearOfRayne

+0

執行提交處理程序並顯示警報? –

+0

沒有那個問題,executuion處理程序被忽略。 – Sangoku

回答

1

,如果你不需要提交按鈕,你爲什麼不使用常規的按鈕,而不是

<input type="button" /> 
+0

它不是我的形式,我必須實施workround並且不能更改遺留代碼。Q___Q – Sangoku

+0

而且您似乎錯過了這一點,重點在於點擊繞過jQuery處理程序的事件 – Sangoku

+0

爲什麼你不能改變它? – ErikE

0
<input type='button' value='i have no idea why he done it like this' onclick='document.getElementById('lol').submit()'> 

+0

正如回覆@RiccoE所指出的那樣,我不能改變那個部分...只有文檔準備部分 – Sangoku

0

只需使用常規按鈕而不是提交。

如果您想繞過提交按鈕,您可以取消該按鈕的類。

<input type='submit' class='cancel' value='i have no idea why he done it like this' onclick='document.lol.submit()'> 
+0

不能編輯它自己的形式,需要從文檔就緒功能中爲它實現一個解決方案。 – Sangoku

+0

然後在文件就緒功能中將類別取消添加到提交按鈕。 addClass('cancel') – Doink

+0

那會完成什麼? – Sangoku

0

在您的附加JavaScript中,刪除內聯onclick事件並將其替換爲您所需的任何內容。問題解決了。

您也可以完全刪除他的按鈕,並將其替換爲您的選擇之一。

+0

抱歉無法做到這一點,因爲我不能直接編輯表格,並且表單在點擊功能上有一些很大的代碼。哪個最終trigers表單提交,忽略jquery,即時猜測,因爲它在這樣低的層次上被激怒。 – Sangoku

+0

您可以保存點擊功能並在完成新功能後調用它嗎? – ErikE

0

刪除document.lol.submit函數。這樣,你可以做任何你想做的事情。

// Magic line 
delete document.lol.submit; 

// Or 
$('form[name="whyyyyy"] input[type=submit]').attr('onclick', ''); 

$(document).ready(function(){ 
    $('form[name="whyyyyy"]').submit(function(e){ 
     e.preventDefault(); 
     alert(1); 
     return false; 
    }); 
}); 
+0

這不會工作,只是現在試了一下。 我猜測,因爲它是在一個代表js的新實例的行代碼中發送的。而刪除ous沒有得到低谷或不知道什麼。 – Sangoku

+0

@三國你嘗試過嗎? –

+0

我不能使用刪除點擊功能,因爲它有一些巨大的遺留代碼。 – Sangoku

0

刪除的onclick

$('input[type=submit]').attr('onclick','') 

然後添加單擊事件,所以如果我得到這個權利,你可以刪除內聯事件處理程序onclick和添加的功能準備

$('input[type=submit]').on('click',function(){ 
     //do your event 
}); 
+0

你應該使用正確的選擇器來獲取提交按鈕'$('input [type = submit]')' –

+0

是的謝謝託尼會更新代碼。 – Doink

0

確定您的自定義處理程序(在您進行驗證和所有必要步驟的情況下):

$(document).ready(function() { 

    var $submit_button = $('input[type=submit]'); 

    $submit_button.removeAttr('onclick'); 

    $submit_button.click(function() { 
    //TODO: implement your custom handler 
    //execute validation etc. 
    }); 

}); 
+0

可悲的是。點擊功能是由像10k歲以上的2k行文件的怪物生成的......但我試圖將最終結果提交動作綁定到函數。我可以問爲什麼downvote? – Sangoku

+0

當然,請在您的答案中查看語言。另外,下一次,如果您有特定的限制條件,請立即在問題中將其清除,而不是在收到許多答案後。 –

-1

你不一定需要使用jQuery來實現這一點。你可以使用標準的JavaScript。

$(document).ready(function(){ 

    document.whyyyyy.submit = function(e){ 

     alert(1); 
     return false; 
}; 
}); 

這個例子有效,但你可能會碰到一個jQuery的錯誤。