2017-04-12 109 views
0

我有一個奇怪的問題,我無法解釋。我使用播放框架,當我嘗試運行下面的視圖時,它只適用於當我重複下面的表單動作...它的作品,但我知道這是不正確的。如果有人能幫助解釋或糾正,我們會很感激。斯卡拉玩形式

@(errorMessage: String = "")(implicit messages: Messages) 

@helper.form(routes.ApplicationHomeController.login) { 
    @main(title = messages("single.title")) { 
     <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,700" rel="stylesheet" type="text/css"> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
     <div id="userbox"> 
      <form action="@{routes.ApplicationController.doLogin()}" method="post"></form> 

      <form action="@{routes.ApplicationController.doLogin()}" method="post"> 
       <div style="color: red">@errorMessage</div> 
       <h1 id="logintxt" style="background-color: rgb(11, 146, 9); 
          background-position: initial; 
          background-repeat: initial;">Driver Service <b>ß</b>eta</h1> 

       <div id="submit_giff" style="display: none;"> 
        <hi> Authenticating: <img src="/assets/images/loader-bar.gif" align="absmiddle"> </hi> 
       </div> 
       <input id="name" name="userName" placeholder="Username" style="opacity: 1; 
          background-color: rgb(255, 255, 255); 
          background-position: initial; 
          background-repeat: initial;"> 
       <input id="pass" name="password" type="password" placeholder="Password" style="opacity: 1; 
          background-color: rgb(255, 255, 255); 
          background-position: initial; 
          background-repeat: initial;"> 

       <p id="namealert" style="display: none; 
          opacity: 1;">Username:</p> 
       <p id="passal" style="display: none; 
          opacity: 1;">Password:</p> 
       <input id="loginbtn" style="opacity: 0.2; 
          cursor: default;" type="submit" value="Login"> 
      </form> 
     </div> 
     <script src="/assets/javascripts/login.js"></script> 
    } 
} 

回答

2

兩個直接的意見。

其中:@helper.form(...)會將<form>元素寫入最終生成的HTML中。您的觀點則包含其他文字<form>的嵌套裏面的第一種形式。 Nested forms are invalid HTML。您有一份表格提交至routes.ApplicationController.doLogin,另一份提交至routes.ApplicationController.login。誰知道瀏覽器實際提交哪些內容?我們無法真正預測,因爲嵌套表單無效。

二:你有你的@main(...)視圖嵌套裏面你的@helper.form(...)。我假設你的主視圖包含<html>...</html>。這將導致HTML開始於<form>元素,內部這是<html>元素。這也是非常無效的標記。

我的猜測是這些問題中的一個或兩個都是你的問題。

嘗試將生成的HTML文件通過HTML驗證程序(如https://validator.nu/)運行。修復驗證程序發現的任何問題,不要嵌套表單,並決定登錄表單應實際提交的路徑(單一)。