2016-01-26 71 views
0

我提交表單是這樣的:爲什麼JavaScript onClick不會觸發jQuery提交功能?

<input id="submitBtn" style="margin-top:20px;" type="button" onclick="document.getElementById('form94').submit();" value="Opdater"> 

,由於某種原因不觸發我jQuery.submit()功能。

$("#form94").submit(function() { 
    var form = $(this); 
     $.ajax({ 
      url : form.attr('action'), 
      type : form.attr('method'), 
      data : form.serialize(), // data to be submitted 
      success: function(response){ 
       $("#showFancyBoxThankYouLink").click(); 
      } 
     }); 
    return false; 
}); 
+0

拿出類型=「按鈕」和onclick屬性從HTML按鈕..加起來type =「submit」 – ameenulla0007

+0

由於一些造型問題,這裏有一個原因。 –

+1

用你的html添加一個小提琴。 – ameenulla0007

回答

0

因爲你用不同的選擇

document.getElementById('form94'); //returns a HTML DOM Object 
$('#form94'); //returns a jQuery Object 

你可以試試下面的代碼,它工作正常

<form id="form94"> 
    <input id="submitBtn" style="margin-top:20px;" type="button" onclick="$('#form94').submit();" value="Opdater"> 
</form> 

<script type="text/javascript"> 
$("#form94").submit(function(e) { 
    e.preventDefault(); 
    alert('test'); 
}); 
0

使得函數了出來,並用的onclick觸發這樣的:

<input id="submitBtn" style="margin-top:20px;" type="button" onclick="myfunction()" value="Opdater"> 

function myfunction() { 
var form = $(this); 
     $.ajax({ 
      url : form.attr('action'), 
      type : form.attr('method'), 
      data : form.serialize(), // data to be submitted 
      success: function(response){ 
       $("#showFancyBoxThankYouLink").click(); 
      } 
     }); 
    return false; 
} 
0

是JavaScript的形式被渲染後運行?如果沒有,請確保您的javascript位於表單之後或嘗試在文檔加載後運行它。

$(document).ready(function() { 
    $("#form94").submit(function() { 
    var form = $(this); 
     $.ajax({ 
      url : form.attr('action'), 
      type : form.attr('method'), 
      data : form.serialize(), // data to be submitted 
      success: function(response){ 
       $("#showFancyBoxThankYouLink").click(); 
      } 
     }); 
    return false; 
    }); 
}); 

提交表單提交的另一種方法是將onsubmit屬性添加到窗體並讓它返回一個函數。您也可以更改按鈕類型以提交和刪除onclick屬性。

<form id="form94" name="form94" onsubmit="return SubmitMyForm();"> 
    <input type="submit" value="Opdater"> 
</form> 

<script> 
function SubmitMyForm() { 
    var form = $(this); 
    $.ajax({ 
     url : form.attr('action'), 
     type : form.attr('method'), 
     data : form.serialize(), // data to be submitted 
     success: function(response){ 
      $("#showFancyBoxThankYouLink").click(); 
     } 
    }); 
    return false; 
} 
</script> 
0

沒有代碼示例,很難說。而且,有些瀏覽器只在用戶點擊提交按鈕時才提交表單,不能通過腳本提交。

圍繞這個話題還有很多其他的SO帖子,他們都歸結爲當提交事件被附加時不存在的表單(你的腳本是在文檔的頂部執行還是在文檔的準備事件中執行?)。

表尚不存在: Why Jquery form submit event not firing? Jquery .Submit() is not triggering submit event

通過腳本提交: Should jQuery's $(form).submit(); not trigger onSubmit within the form tag?

不使用一個提交按鈕: jQuery submit not firing

0

替換此

onclick="document.getElementById('form94').submit();" 

onclick="$("#form94").submit();"

javascript submit()不會在IE中冒泡,它們可能是其他陷阱。