javascript - 在未发布的表单中添加了密码字段

标签 javascript php jquery html forms

所以我有一个表单,在其中选择下拉菜单中的选项后,我想向表单添加密码字段。我在通过 js 函数选择值为“private”的选项后添加它。 这是表单的 html 代码。

<form id="eventForm" class="pure-form pure-form-aligned" action="insertDB.php" method="POST">
    <fieldset>
        <div class="pure-control-group">
            <label for="name">Názov</label>
            <input id="name" type="text" placeholder="Názov" name="name" required>
        </div>

        <div class="pure-control-group">
            <label for="type">Typ udalosti</label>
            <select id="type" class="pure-control-group" onchange="addPassRow(this.selectedIndex);" name="eventType">
                <option value="sports">Šport</option>
                <option value="culture">Kultúra</option>
                <option value="nature">Príroda</option>
                <option value="education">Vzdelávanie</option>
                <option value="private">Súkromné</option>
            </select>
        </div>

        <div class="pure-control-group">
            <label for="lati">Zemepisná šírka</label>
            <input id="lati" type="text" placeholder="Zemepisná šírka" name="lati" required>
        </div>

        <div class="pure-control-group">
            <label for="long">Zemepisná dĺžka</label>
            <input id="long" type="text" placeholder="Zemepisná dĺžka" name="long" required>
        </div>

        <div class="pure-control-group" id="linkDiv">
            <label for="link">Link</label>
            <input id="link" type="text" placeholder="Link" size="40" name="link" required>
        </div>

        <div class="pure-controls">
            <button type="submit" class="pure-button pure-button-primary">Submit</button>
        </div>
    </fieldset>
</form>

这是 JS 函数:

function insertAfter(referenceNode, newNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

function addPassRow(index) {
    if (index == 4) {
        var div = document.createElement('div');

        div.className = 'pure-control-group';

        div.innerHTML = ' <div class="pure-control-group" id="passwordDiv">' +
                        '<label id="passwordLabel" for="password">Heslo</label>' +
                        '<input id="password" type="password" placeholder="Zadaj heslo">' +
                        '</div>';

        insertAfter(document.getElementById("linkDiv"), div);
    };

这就是我将密码字段添加到表单中的方法。选择私有(private)下拉列表后,会出现密码字段。但是在我填写并提交后,我可以通过 $_POST 获取除密码值之外的所有值,但 chrome 会询问我是否要保存密码。如果有人知道为什么密码值没有发布?谢谢!

最佳答案

您缺少新字段的名称属性:

替换:

div.innerHTML = ' <div class="pure-control-group" id="passwordDiv">' +
  '<label id="passwordLabel" for="password">Heslo</label>' +
  '<input id="password" type="password" placeholder="Zadaj heslo">' +
  '</div>';

与:

div.innerHTML = ' <div class="pure-control-group" id="passwordDiv">' +
  '<label id="passwordLabel" for="password">Heslo</label>' +
  '<input id="password" name="password" type="password" placeholder="Zadaj heslo">' +
  '</div>';

关于javascript - 在未发布的表单中添加了密码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332711/

相关文章:

php - MySQL 选择分组依据和排序依据

javascript - 使用下拉菜单显示特定的数据表

javascript - 向下滚动时如何向上移动文本?

php - 如何使用 AJAX 更改 Wordpress 中的分页

php - 在 Laravel 中播种数据库时找不到表错误

javascript - 我如何创建一个带有滚动的 html 表格

javascript - jQuery 创建了新数组

javascript - 使绝对定位按钮与其内容宽度相同

javascript - 如何检查您的纬度和经度是否在圆内?

javascript - Angular 1 : Add new ID to newly created objects