从 datalist 选项检索 data-id 时 JavaScript 函数返回 NaN

标签 javascript

我正在尝试从数据列表中选定的选项中查找 data-id 的值。我有一个返回正确值的函数,但也给我一个带有“NaN”的弹出窗口。作为对我的问题的标准响应,我使用“intParse”或“isNaN”函数,但似乎没有什么可以阻止返回“NaN”
所以我收到了两个警报。首先使用正确的值,然后在调用此函数时使用“NaN”。

$("#EducationEstablishment").on('input', function() {
  var id = GetDataListOptionValue(EducationEstablishment, establishments);
  alert(id)
});

function GetDataListOptionValue(datalistInputId, dataListId) {

  var x = $(datalistInputId).val();
  var z = $(dataListId);
  var val = $(z).find('option[value="' + x + '"]');
  endval = val.attr('data-id');

  var num = isNaN(parseInt(endval)) ? 0 : parseInt(endval)
  return (num);

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="EducationEstablishment" list="establishments" type="text">
<datalist id="establishments">
  <option data-id="100018962" value="Instituto Tecnologico De Buenos Aires"></option>
  <option data-id="100084386" value="National University of Cordoba, Argentina"></option>
</datalist>

最佳答案

首先,您正在使用 Automatically Created Variable ,您的浏览器或其他东西可能不支持。您使用的 ACVEducationEstablishmentelections。所以你应该做的是摆脱这些并使用 jQuery 选择你的输入,如下所示:

$("#EducationEstablishment").on('input', function() {
  // instead of passing those ACVs, we will pass IDs instead (IDs are strings)
  var id = GetDataListOptionValue("#EducationEstablishment", "#establishments");
  alert(id)
});

// instead of getting two ACVs, get IDs then select the elements properly
function GetDataListOptionValue(datalistInputId, dataListId) {

  // datalistInputId will be something like this "#datalisInput"
  var x = $(datalistInputId).val();
  // same here
  var z = $(dataListId);
  var val = $(z).find('option[value="' + x + '"]');
  endval = val.attr('data-id');

  var num = isNaN(parseInt(endval)) ? 0 : parseInt(endval)
  return (num);

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="EducationEstablishment" list="establishments" type="text">
<datalist id="establishments">
  <option data-id="100018962" value="Instituto Tecnologico De Buenos Aires"></option>
  <option data-id="100084386" value="National University of Cordoba, Argentina"></option>
</datalist>

关于从 datalist 选项检索 data-id 时 JavaScript 函数返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41984179/

相关文章:

javascript - jQuery 搜索匹配字符串并删除父 div

javascript - 在选择框中选择空选项时显示所有隐藏的表格行

javascript - Ajax 只播放音频文件一次

javascript - 无法将隐藏的 div 对齐以在可见性上垂直和水平显示在页面中心

javascript - 上传到 Firebase 存储后,Firebase FCM 不发送图像通知

javascript - 有人可以解释一下这个功能是如何工作的吗?

javascript - 绑定(bind)超出范围的变量可以加速您的代码吗?

javascript - 在javascript中将日期从 'Thu Jun 09 2011 00:00:00 GMT+0530 (India Standard Time)'转换为 'YYYY-MM-DD'

javascript - HTML5 FileReader 如何返回结果?

javascript - 如何根据内容将页脚固定在特定高度,如果内容增加它会变大