【问题标题】:HTML form post call hidden fieldHTML表单发布调用隐藏字段
【发布时间】:2015-05-30 00:10:58
【问题描述】:

我正在尝试为登录页面进行后期调用。用户手动输入用户名/密码。但是,我希望在用户输入他/她的用户名时将以下字段设置为 name=username。

我在下面有这些字段。我有一个隐藏字段,想用用户手动输入的用户名替换用户名位。

<input class="form-control" type="hidden" required name="username" placeholder="Username">
<input class="form-control" type="password" required name="password" placeholder="Password">

<input class="form-control" type="hidden" required name="arg" placeholder="name">

应该是这样的

username=stack
password=userset
arg='name=stack'

【问题讨论】:

  • 问题不清楚,要改输入arg的占位符还是什么?

标签: javascript html post


【解决方案1】:

您可以尝试使用 jQuery。在这里,我有一个用户仍未提交表单的示例。

$(document).ready(function() {

    $("input[name='username']").keyup(function() {
         $("input[name='arg']").val("'name=" + $(this).val() + "'");
    });

});

如果你真的想得到 $_POST 值,你必须使用一些 php 序列化它们。

<script type="text/javascript">
    var $post = <?php echo json_encode($_POST); ?>;
</script>

然后您可以使用 $post["username"] 访问您的变量。但我不明白你为什么要使用这个解决方案,因为你可以使用普通的 php 来做到这一点。

在您的代码中应该如下所示:

<script type="text/javascript">

     $(document).ready(function() {
        $('form#form1').submit(function(){
            $.ajax({type: "Post",
                    url: $('form').attr('action'),
                    data: $(this).serialize(),
                    success: function(data, status, xhr) {
                        alert("Login successful. Please press OK to be redirected. Redirecting in 5 seconds.");
                        window.setTimeout(function(){window.location.href = "/login"},5000);},
                        error: function(data, status, xhr) {
                            $('form').trigger("reset");
                            alert("Failed to login. Please try again.");
                        }
                    });

                return false;
                alert("AJAX request successfully completed");
            });



          $("input[name='username']").keyup(function() {
              $("input[name='arg']").val("'name=" + $(this).val() + "'");
          });
     });

</script>

【讨论】:

    【解决方案2】:

    如果我正确理解您想要做什么,听起来您想要获取 input DOM 对象并在每次用户更改用户名文本输入框中的值时更改其占位符属性。

    您可以使用getElementsByName('NAME')[0] 获取 DOM 元素(假设名称是唯一的,或者更好地使用 ID 代替以确保它们是唯一的)。

    然后附加一个函数来监听变化并使用inputDomObject.addEventListener("change", functionToHandleChanges);交换placeholder的新值

    您可以使用 placeholderDomObject.setAttribute("placeholder", "thingToSetItTo"); 在输入的 DOM 对象(因此在页面上)设置 placeholder 值

    如果您需要任何澄清,请发表评论:)

    【讨论】:

    • 所以我有用户名字段和 arg 字段。用户名字段是可见的,而 arg 是隐藏的。如果一个人作为用户名进入堆栈。我希望将隐藏字段输入为 name=stack as hidden。这可能吗?
    • 是的,就像我上面在 JavaScript 中描述的那样,只需在用户名输入的 DOM 对象的前面加上"name=" to the value you grab in the onchange event handler function. You can use the .value` 字段即可获取他们输入的值。 (我不确定你的 JavaScript 水平,这个描述可以吗?)
    • 我不太确定我是否理解正确。你能用代码写出来吗?我在 js 方面没有经验。
    • 这是我可以在 html 中完成的吗?还是我需要使用javascript?我不是想抓住它。这是电话后的一部分。
    • 我不知道有什么方法可以在 HTML 中做到这一点,你必须学习一些基本的 JS,或者在服务器上构建你想要的值(如果它是你的网站发布到)。
    猜你喜欢
    • 2011-02-20
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多