2011-11-15 184 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