2011-11-15 99 views
1

下面是這種情況: 我有2個按鈕,一個同類型和名稱submit另一種形式是提交表單與onclick事件的鏈接。JavaScript表單提交的表單包含一個提交按鈕

由於我的表單已經有一個名爲submit的提交按鈕,所以沒有發送javascript函數form.submit()。因爲我正在使用框架,所以無法更改提交按鈕的名稱。

我試圖添加樣式display: none到提交按鈕,但沒有幫助。

有什麼建議?

代碼

<form method="post" action="../../process_form.php"> 
submit button 
<input type="submit" value="submit" class="button" id="label_forsubmit" name="submit"> 

link 
<a class="standart_link" onclick="javascript: YAHOO.wsc.ExpensecontrolOperationsSubmit('a','0','b');" href="javascript:">cancel</a> 
</form> 

JavaScript部分

var btn = document.getElementById(btn_div); 
    var parentForm = YAHOO.util.Dom.getAncestorByTagName(btn_div, 'form'); 
    parentForm.submit.style.disabled = 'none'; 
    parentForm.submit(); 
+0

請張貼一些代碼 –

+0

我添加了一些代碼 – Codemator

+1

如果您使用的框架產生名稱爲「submit」的表單按鈕,那麼您使用的是一個破損的框架。它是什麼框架? – Pointy

回答

2

我建議你提醒框架的創造者。這個嚴重的問題應該解決問題的根源,調整一個元素的名稱應該是他們的一個小小改變。

與此同時,您可以在click事件中刪除表單元素,將其存儲在臨時變量中。然後,撥打submit,最後在onsubmit事件期間重新添加按鈕。

這樣的事情,例如:

(function() { 
    var btn, sibling, 
     form = document.getElementById("myForm"); 

    window.linkSubmit = function() { 
     if (form.submit.tagName) { // is submit actually an element? 
      btn = form.submit; 
      sibling = btn.nextSibling; 
     } 

     YAHOO.wsc.ExpensecontrolOperationsSubmit('a','0','b'); 
    } 

    form.onsubmit = function() { 
     if (btn) { 
      this.insertBefore(btn, sibling); 
      btn = sibling = void 0; // Reset the variables 
     } 
    } 
})(); 

而且,改變你的鏈接標記來此:

<a class="standart_link" onclick="linkSubmit()" href="javascript:">cancel</a> 

作爲一個方面說明,我建議你從你的HTML提取您的JS代碼完全標記。

+1

我被控制幾乎所有我處理的代碼的豪華所欺騙,我沒有任何技能像這樣聰明的解決方法:-) – Pointy

+0

謝謝安迪..它幫了我很多 – Codemator