Javascript jQuery:如何提交一个带有编辑的用户输入值的表单?

Javascript jQuery:如何提交一个带有编辑的用户输入值的表单?,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,例如,我有一个简单的HTML表单: <h3> <a href="#">Login</a> </h3> <div id="tabs-login"> <form method="get" action="./dev.html"> <fieldset> &l

例如,我有一个简单的HTML表单:

      <h3>
            <a href="#">Login</a>
        </h3>
        <div id="tabs-login">
            <form method="get" action="./dev.html">
                <fieldset>
                    <legend>
                        Email:
                    </legend>
                    <input type="text" class="required email" name="login" />
                </fieldset>
                <fieldset>
                    <legend>
                        Password:
                    </legend>
                    <input type="password" class="required" name="pass" />
                </fieldset>
                <input type="submit" value="Submit" />
            </form>
        </div>

电邮:
密码:
我使用jQuery验证它:

    <script>
      $(document).ready(function() { $("form").validate(); });
    </script>

$(document).ready(function(){$(“form”).validate();});
我想在表单提交中获取用户输入的密码值,并通过从中获取,然后提交
email=user inputed value
pass=sha value
。如何通过jQuery访问已验证的值并更改它们并发送到原始表单目的地?

首先--我想指出,我认为这不是一个好主意。在客户端实现密码哈希通常是个坏主意。相反,应该将密码以纯文本(通过HTTPS)发送到服务器,然后在存储之前使用首选算法对其进行散列。这样做的另一个好处是,不会向潜在攻击者公布使用的哈希方法,因为该代码仅存在于服务器上

也就是说:您需要在提交表单之前计算SHA值

可以将事件处理程序绑定到密码字段的模糊事件,以使用新哈希更新隐藏字段的值。或者您可以将更新逻辑添加到验证代码中

不管额外的代码放在哪里,在表单提交之前准备散列比在第一次提交之后发送第二次提交要容易得多

例如


//将其添加到文档就绪处理程序
$('[name=pass]')。模糊(函数(){
$('[name=sha_pass]').val($.sha256($(this.val());
});
首先——我想指出,我认为这不是一个好主意。在客户端实现密码哈希通常不是一个好主意。相反,密码应该以纯文本(通过HTTPS)发送到服务器,然后在存储之前使用您首选的算法对其进行散列。这样做的另一个好处是不向潜在攻击者公布使用的散列方法,因为该代码仅存在于服务器上

也就是说:您需要在提交表单之前计算SHA值

您可以将事件处理程序绑定到密码字段的模糊事件,以使用新哈希更新隐藏字段的值。也可以将更新逻辑添加到验证代码中

不管额外的代码放在哪里,在表单提交之前准备散列比在第一次提交之后发送第二次提交要容易得多

例如


//将其添加到文档就绪处理程序
$('[name=pass]')。模糊(函数(){
$('[name=sha_pass]').val($.sha256($(this.val());
});

格栅!)你能演示如何在pas值更改上实现隐藏值更改吗?以及如何锁定表单提交,直到计算出阴影值为止?添加了代码。HTML片段在表单中添加了一个位置,以便计算出值。下面的JS设置它,以便在焦点离开密码字段时,浏览器自动重新计算e SHA值并将其填充到隐藏字段中。我看到人们对我的答案投了赞成票——这很好——但这让我想重申我在顶部所说的:这是一种实现安全性的糟糕方法。哈希应该在服务器端进行,原因有很多,其中最重要的都与安全设计有关。示例代码这里应该可以工作,但这是错误的方法。我已经有了存储到DB=)的说明。我想在客户端使用SHA编码来保护用户,使其不受thare
纯文本
密码的保护(至少一点=)的保护!)您能演示如何在pas值更改上实现隐藏值更改吗?以及如何锁定表单提交,直到计算出阴影值?添加了代码。HTML片段在表单中为计算值添加了一个位置。下面的JS将其设置为,当focus离开密码字段时,浏览器会自动重新计算SHA值并将其填充到隐藏字段中。我看到人们对我的答案进行了投票——这很好——但这让我想重申我在顶部所说的:这是一种不好的安全实现方式。由于各种原因,哈希应该在服务器端进行,其中最重要的都与安全设计有关。这里的示例代码应该可以工作,但这是错误的方法。我已经有了关于存储到DB=)的说明。我想在客户端使用SHA编码来保护用户,使其免受密码保护(至少一点=)
<!-- add this to the form -->
<input type="hidden" name="sha_pass" value="" />

// add this to the document ready handler
$('[name=pass]').blur(function() {
    $('[name=sha_pass]').val($.sha256($(this).val());
});