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以下问题:

  • 表单未提交ED,当我推的领域之一“输入”
  • goog.events.EventType.SUBMIT没有在表格上触发的事件, 所以我最终的听众不会被执行

我怎样才能解决这个问题?
由于受期待您的回答

回答

2

我发现的黑客是:

  • 追加一个隐藏按钮标签
  • 触发的隐藏按钮点击事件动作


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浏览器不会触发隐藏“Display:none”元素上的事件,因此我们必须隐藏其他css规则的按钮