1

私は閉鎖UIボタンを持つフォームを持っています:

<form id="login-form">
    <div>
        <input type="text" name="email" />
        <input type="password" name="password" />
        <div id="submit-login" class="goog-css3-button">Sign in</div>
    </div>
</form>

ボタンにフォームを送信させました:

var myButton = goog.ui.decorate(goog.dom.getElement("submit-login"));
myButton.setDispatchTransitionEvents(goog.ui.Component.State.ALL, true);
goog.events.listen(myButton, goog.ui.Component.EventType.ACTION, function(e) {
    goog.dom.getElement("login-form").submit();
});

現在、次の2つの問題があります。

  • いずれかのフィールドで「Enter」を押してもフォームが送信されない
  • イベントgoog.events.EventType.SUBMITはフォームでトリガーされないため、最終的なリスナーは実行されません

どうすればこれを修正できますか?

4

1 に答える 1

2

私が見つけたハックは次のとおりです。

  • 非表示のボタン タグを追加する
  • イベント ACTION の非表示ボタンのクリックをトリガーします


var hiddenSubmit = goog.dom.createDom("button",{ type : "submit", "style" : "visibility: hidden; position: absolute; z-index: -10000"});
goog.dom.appendChild(goog.dom.getElement("submit-login"), hiddenSubmit);
goog.events.listen(myButton, goog.ui.Component.EventType.ACTION, function(e) {
    hiddenSubmit.click();
});


編集: Safari と Chrome は「表示: なし」要素で非表示のイベントをトリガーしないため、他の CSS ルールでボタンを非表示にする必要があります

于 2013-01-22T14:03:31.643 に答える