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. 「submit」イベント リスナーを追加します。

    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 に答える