在提交表单之前附加元素

时间:2016-09-28 13:12:56

标签: javascript html forms html-form

我想在服务器上提交(我有自己的理由,我知道我在做什么之前)在客户端哈希密码。我正在使用jsSHA(它工作,我提醒输出)哈希密码。

我创建了一个新元素,将散列密码分配给它的值并将其附加到表单中。但表格仍未提交。

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jsSHA/2.0.2/sha.js"></script>
 <form id = "form" name="form" method="post" action="verify.php" class="login">
   Username: <input type="text" name="username" style = "width: 350px"><br>
   Password: <input type="password" name="pwd" id="pwd" style="width: 350px; margin-left: 3px;"><br>
   Remember Me: <input type="checkbox" name="rememberme" value="1"><br>
   <input type="submit" name="submit" value="Login!" class="loginbutton" onclick="submitForm();">
 </form>

JS

function submitForm(){
    var form = document.getElementById("form");
    var pwd = document.getElementById('pwd');
    var hash = new jsSHA("SHA-256", "TEXT", {numRounds: 1});
    hash.update(pwd.value);
    var hash = hash.getHash("HEX");
    var password = document.createElement("password");
    password.name="password";
    password.type="hidden";
    password.id = "password";
    password.value = hash;
    form.appendChild(password);
    pwd.value = "";
    form.submit()
}

发送了参数:

username: user
pwd: ""
rememberme: "1"
submit: "Login!"

我如何password: *some value*这些发送的参数?我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在使用password创建input元素而不是type="password"元素。浏览器只从他们知道的表单元素(输入,按钮,文本区域等)发送数据。此外,您在元素上设置属性,但在兼容性方面设置属性可能更安全。