Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将表单的两个字段合并为一个字段?_Javascript_Html_Pug - Fatal编程技术网

Javascript 如何将表单的两个字段合并为一个字段?

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")

一旦我将用户名和密码编码到base64中,我将尝试将它们加入一个字段。我的问题出现在创建一个隐藏类型输入时,当我发送表单时,它只发送用户名和密码(都是编码的),但不加入它们。下面的代码就是我遇到问题的地方,我认为问题出在表单下面的脚本中

//玉锉

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
已经是一个字符串。是的,我已经尝试过了,但什么也没做