0

我无法更改以下代码,而是必须覆盖按钮的默认功能,以便在单击时调用自定义 javascript 方法而不是提交的表单。

为了做到这一点,我必须通过注入使用 javascript。(它是一个使用 twitter api 的 AIR 桌面应用程序)

任何人都可以帮忙吗?

<body>
<form><fieldset class="buttons">
           <input class="submit button" id="cancel" name="cancel" type="submit" value="Cancel" />
</fieldset>
</form>
<body>
4

2 回答 2

2

如果你想防止表单提交覆盖点击是不够的。可以通过 Ctrl+Enter 提交表单。

您可以执行以下http://jsfiddle.net/tarabyte/R5yQq/

  1. 假设您知道按钮 ID,请查找表单。

    function getForm(id) {
    
         var button = document.getElementById(id);
    
         while(button && 
              (button = button.parentNode) && 
              (button.nodeName !== 'FORM')){}
    
         return button;
    }
    
  2. 添加“提交”事件监听器。

    var form = getForm('cancel'),
        handler = function(ev){
        ev = ev || window.event;
        if(ev.preventDefault) { //w3c browsers
            ev.preventDefault();    
        }
        else { //IE old
            ev.returnValue = false;    
        }
        alert('Custom logic goes here!'); 
    };
    if(form) {
        if(form.addEventListener) {
           form.addEventListener('submit', handler, false)   
        }
        else if(form.attachEvent) {
           form.attachEvent('onsubmit', handler);   
        }    
    }
    
于 2014-03-06T14:21:31.120 回答
0

通过 JS 将其替换为调用您的函数的按钮

document.getElementById('cancel').parentNode.innerHTML = '<input type="button" onClick="myFunc()" value="replaced">';
window.myFunc = function() { alert('clicked'); return false; }

http://jsfiddle.net/e37nd/

于 2014-03-05T16:28:22.233 回答