2016-03-23 57 views
1

我正在編寫R應用程序的登錄表單。除了1件事外,一切都很好:每次觸發一個keyup事件時,我都會用MD5加密密碼。到現在爲止,結果是正確的。當我點擊提交按鈕時,問題就會增加。我嘗試從R中的這個加密輸入中讀取文本,但是Shiny會讀取「」,也就是說,空字符串。我已經檢查過它,當然它不是空的。 Shiny從這個加密輸入中讀取任何內容的唯一方法是我手動輸入內容。自動填充的輸入未讀入Shiny

如何在後端讀取此密碼?在我的Html,JS和R代碼下面。

<div class="col-md-4"> 
    <form role="form"> 
     <div class="form-group"> 
      <label for="user"> User (test) </label> 
      <input type="text" name="user" class="form-control shiny-bound-input" id="user" /> 
     </div> 
     <div class="form-group"> 
      <label for="password"> Password (test) </label> 
      <input type="password" name="password" class="form-control shiny-bound-input" 
        id="password"/> 
      <input type="password" name="pass" class="form-control shiny-bound-input" 
        id="pass" style="display:none;"/> 
     </div> 
     <button id="loginButton" type="button" class="btn btn-default action-button shiny-bound-input">Login</button> 

    </form> 
</div> 

$(function() { 
    $("#password").keyup(function(){ 
     $("#pass").val(md5($("#password").val())); 
    }); 
}); 

if (input$loginButton > 0) { 
    Username <- isolate(input$user) 
    Password <- isolate(input$password) 
    print(Password) 
} 
+0

您可以使用'Shiny.onInputChange' javascript將密碼發送到後端。添加'Shiny.onInputChange(「encrypted_pa​​ss」,md5(...));'在您的js代碼中的某處,並通過'input $ encrypted_pa​​ss'訪問。 –

回答

0

感謝@warmoverflow我能按預期工作。

KeyUp事件結束這樣

$("#password").keyup(function(){ 
      Shiny.onInputChange("pass", md5($("#password").val())); 
     }); 

,並單擊按鈕時,通過已經被加密,並且準備好被讀取。