我不知道如何用jQuery或JavaScript编写这段代码,希望有人能帮助我实现这一逻辑.

我的目标是,当我 Select DataList选项时,我希望获得所选选项的属性ID,并使其值为data-set.

<input type="text" id="city" data-set="" list="citylist"  name="city" required>
<datalist id="citylist">
    <option class="citydata" id="012801000">Adams</option>
    <option class="citydata" id="012802000">Bacarra</option>
    <option class="citydata" id="012803000">Badoc</option>
</datalist>

例如,我 Select 属性为IDAdams 那么输入的输出现在是:

<input type="text" id="city" data-set="012801000" value="Adams" list="citylist"  name="city" required>

推荐答案

您可以使用addEventListenerinput事件附加到元素,这样就可以获取和设置元素的属性属性.

您可以try 以下方式:

const cityInput = document.getElementById('city');
const cityListOptions = document.querySelectorAll('#citylist > .citydata');

//attach the event
cityInput.addEventListener('input', function() {
  console.clear(); //clear the console
  //get the selected option
  const selectedOption = [...cityListOptions].find(option => option.value === cityInput.value);
  //check if selectedOption is truthy
  if (selectedOption) {
    //get and set the property
    cityInput.dataset.set = selectedOption.id;
    cityInput.setAttribute('value', selectedOption.value);
  }    
  console.log(document.getElementById('city')); //test
});
<input type="text" id="city" data-set="" list="citylist" name="city" required>
<datalist id="citylist">
  <option class="citydata" id="012801000">Adams</option>
  <option class="citydata" id="012802000">Bacarra</option>
  <option class="citydata" id="012803000">Badoc</option>
</datalist>

Javascript相关问答推荐

React中的表格中 Select Radio按钮

原型链中的同一财产怎么会有不同的价值?

将下拉分区与工具提示结合起来

追踪执行顺序

根据总价格对航班优惠数组进行排序并检索前五个结果- Angular HTTP请求

如何分配类型脚本中具有不同/额外参数的函数类型

if/else JavaScript中的条件行为

网页自检测外部元素无法加载

我应该绑定不影响状态的函数吗?'

使用javascript将Plotly Expandable Sparkline转换为HighCharter Plot在bslib卡中

为什么ngModel不能在最后一个版本的Angular 17上工作?'

如何禁用附加图标点击的v—自动完成事件

将字符串UTC Date转换为ngx—counting leftTime配置值的数字

如何将Map字符串,布尔值转换为{key:string;value:bo布尔值;}[]?<>

在服务器上放置了Create Reaction App Build之后的空白页面

构造HTML表单以使用表单数据创建对象数组

还原器未正确更新状态

在使用REACT更改了CSS类之后,无法更改CSS样式

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

如何在FiRestore中的事务中使用getCountFromServer