Javascript 如何将表单的两个字段合并为一个字段?
一旦我将用户名和密码编码到base64中,我将尝试将它们加入一个字段。我的问题出现在创建一个隐藏类型输入时,当我发送表单时,它只发送用户名和密码(都是编码的),但不加入它们。下面的代码就是我遇到问题的地方,我认为问题出在表单下面的脚本中 //玉锉Javascript 如何将表单的两个字段合并为一个字段?,javascript,html,pug,Javascript,Html,Pug,一旦我将用户名和密码编码到base64中,我将尝试将它们加入一个字段。我的问题出现在创建一个隐藏类型输入时,当我发送表单时,它只发送用户名和密码(都是编码的),但不加入它们。下面的代码就是我遇到问题的地方,我认为问题出在表单下面的脚本中 //玉锉 extends ./layout.jade block contenido div(class="d-flex justify-content-center center-block big-top-space")
extends ./layout.jade
block contenido
div(class="d-flex justify-content-center center-block big-top-space")
form(class="col-md-6" action="/user/login" method="POST" id="formData" name="myform")
div(class="form-group")
label(for="username") Usuario
input(type="text" name="username" placeholder="Usuario" id="username" class="form-control")
div(class="form-group")
label(for="password") Contraseña
input(type="password" name="password" placeholder="Contraseña" id="password" class="form-control")
div(class="row top-space")
div(class="col-xs-12 col-sm-6")
input(type="submit" value="Iniciar sesión" class="btn btn-info" onclick="toBase64()")
div
input(type="hidden" id="joint")
div(class="col-xs-12 col-sm-6 text-right")
a(href="/signup") No tengo cuenta
script.
function toBase64(){
var username = btoa(document.getElementById("username").value);
var password = btoa(document.getElementById("password").value);
document.getElementById("joint").value = username+":"+password;
}
您可以尝试使用toString()然后加入,这样我就解决了问题。我所做的唯一一件事就是在创建隐藏的输入类型时添加名称字段,因为如果不在该输入中添加名称,它就不会以表单的形式发送。以下代码是我的最终代码:
extends ./layout.jade
block contenido
div(class="d-flex justify-content-center center-block big-top-space")
form(class="col-md-6" action="/user/login" method="POST" id="formData" name="myform")
div(class="form-group")
label(for="username") Usuario
input(type="text" placeholder="Usuario" id="username" class="form-control")
div(class="form-group")
label(for="password") Contraseña
input(type="password" placeholder="Contraseña" id="password" class="form-control")
input(type="hidden" name="authHeader" id="authHeader" class="form-control")
div(class="row top-space")
div(class="col-xs-12 col-sm-6")
input(type="submit" value="Iniciar sesión" class="btn btn-info" onclick="toBase64()")
div(class="col-xs-12 col-sm-6 text-right")
a(href="/signup") No tengo cuenta
script.
function toBase64(){
document.getElementById('authHeader').value = "Authorization: Basic "+btoa(document.getElementById('username').value+":"+document.getElementById('password').value);
}
我在这里找到了信息:我假设表单是在运行JS代码之前提交的?考虑防止默认动作,然后在隐藏的输入值填充之后提交表单?我需要这个,因为它是一个登录表单。表单在提交之前提交,因为当我引入凭据时,函数会完成它的工作,因为用户名和密码是经过编码的,我的问题是base64中用于编码
username:password
的隐藏字段(包含用户名和密码解码)没有被识别。我已经解释了为什么我认为是这样。可悲的是,这可能会有帮助,但这不会有帮助input.value
已经是一个字符串。是的,我已经尝试过了,但什么也没做