微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将用户从数据列表下拉列表中选择的值插入到模板字符串中,以便在提交时向用户显示消息?

如何解决如何将用户从数据列表下拉列表中选择的值插入到模板字符串中,以便在提交时向用户显示消息?

我有以下表格中的 2 个数据列表。我试图让选定的变量值(让 input1 和让 input2)显示在通过模板字符串变量 let message 提交时出现的消息中,但它不起作用。我没有收到任何错误

知道为什么它不起作用吗?是否可以简化事件侦听器,以便我不必为每个变量写出一个新变量,因为我有 4 个数据列表?

const victory = document.createElement('audio'),form = document.querySelector('form'),nameInput = document.querySelector('#name-input'),surnameInput = document.querySelector('#surname-input'),footer = document.querySelector('#footer');

const messageBox = document.createElement('div');
    
messageBox.setAttribute('class','message-Box');
victory.src = 'sound/victory.mp3';

let input1 = nameInput.addEventListener('input',() => {
   const nameValue = surnameInput.value;
});

let input2 = surnameInput.addEventListener('input',() => {
    const surnameValue = surnameInput.value;
});

form.addEventListener('submit',(e) => {
    e.preventDefault();

    let message = `You have succesfully ordered ${input1} ${input2}`;
    messageBox.appendChild(document.createTextNode(message));

    victory.play();

    footer.parentNode.insertBefore(messageBox,footer);

    messageBox.style.backgroundColor = 'green';
    messageBox.style.textAlign = 'center';
    messageBox.style.margin = '0 1rem 2rem';
    messageBox.style.padding = '1rem';
    messageBox.style.borderRadius = '5px';
});
<form action="">

    <fieldset>
        <legend>Choose your skater</legend>

        <div>
            <label>Name</label>
        </div>

        <div>
            <input id="name-input" list="name" type="text" title="Select desired name of your skater">
            <datalist id="name">
                <option value="Tony" data-id="1"></option>
                <option value="Joe" data-id="2"></option>
                <option value="Paul" data-id="3"></option>
                <option value="Scott" data-id="4"></option>
            </datalist>
        </div>

        <div>
            <label>Surname</label>
        </div>
        
        <div>
            <input id="surname-input" list="surname" type="text" title="Select desired surname of your skater">
            <datalist id="surname">
                <option value="Hawk" data-id="1" label="james"></option>
                <option value="Carter" data-id="2"></option>
                <option value="Philmore" data-id="3"></option>
                <option value="Venice" data-id="4"></option>
            </datalist>
        </div>
    </fieldset>
    
     <button class="btn" type="submit" title="Submit your choice">Submit</button>
</form>

<footer id="footer"></footer>

解决方法

您捕获输入值的方式是错误的。这会奏效。

let input1 = '';
nameInput.addEventListener('input',() => {
   input1 = nameInput.value;
});

let input2 = '';
surnameInput.addEventListener('input',() => {
    input2 = surnameInput.value;
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?