JavaScript函数在从datalist选项检索数据id时返回NaN

JavaScript函数在从datalist选项检索数据id时返回NaN,javascript,Javascript,我正在尝试从数据列表中的选定选项中查找数据id的值。我有一个函数,它返回正确的值,但也给我一个带有“NaN”的弹出窗口。作为对我的问题的标准响应,我使用了“intParse”或“isNaN”函数,但似乎没有任何东西能阻止返回“NaN” 所以我收到了两个警报。首先使用正确的值,然后在调用此函数时使用“NaN” $(“#教育建立”)。关于('input',function(){ var id=GetDataListOptionValue(教育机构、机构); 警报(id) }); 函数GetData

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

$(“#教育建立”)。关于('input',function(){
var id=GetDataListOptionValue(教育机构、机构);
警报(id)
});
函数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)
返回(num);
}

据我所知,当用户键入内容时,您希望从选项中获取
数据id
字段

因此,请检查以下代码:

$(“#教育机构”)。关于('input',function(){
var id=findDataIdInDataList($(this.data('list'),$(this.val());
$('#EducationEstablishmentDataId')。文本('';
如果(id>0){
$(“#教育机构数据id”).text(id);
}
});
函数findDaitaidInDataList(dataListSelector,值){
变量$dataList=$(dataListSelector);
如果(!$dataList)返回0;
var$selectedOption=$dataList.find('option[value=“”+value+”]:first');
如果(!$selectedOption)返回0;
返回parseInt($selectedOption.data('id'))| | 0;
}


数据标识:

粘贴到上面的输入:科尔多瓦国立大学,阿根廷
据我所知,当用户键入内容时,您希望从选项中获取
数据id
字段

因此,请检查以下代码:

$(“#教育机构”)。关于('input',function(){
var id=findDataIdInDataList($(this.data('list'),$(this.val());
$('#EducationEstablishmentDataId')。文本('';
如果(id>0){
$(“#教育机构数据id”).text(id);
}
});
函数findDaitaidInDataList(dataListSelector,值){
变量$dataList=$(dataListSelector);
如果(!$dataList)返回0;
var$selectedOption=$dataList.find('option[value=“”+value+”]:first');
如果(!$selectedOption)返回0;
返回parseInt($selectedOption.data('id'))| | 0;
}


数据标识:

粘贴到上面的输入:科尔多瓦国立大学,阿根廷
使用本机javascript:

var x = document.getElementById(datalistInputId).value;
var z = document.getElementById(dataListId);
var val = z.querySelector('option[value="' + x + '"]');
var num = val.dataset['id'];          
return (parseInt(num) || 0);  

使用本机javascript:

var x = document.getElementById(datalistInputId).value;
var z = document.getElementById(dataListId);
var val = z.querySelector('option[value="' + x + '"]');
var num = val.dataset['id'];          
return (parseInt(num) || 0);  

首先,您正在使用,这可能是您的浏览器或其他东西不支持的。您使用的ACV
教育机构
机构
。因此,您应该做的是去掉这些,然后使用jQuery选择输入,如下所示:

$(“#教育建立”)。关于('input',function(){
//我们不会传递这些ACV,而是传递ID(ID是字符串)
var id=GetDataListOptionValue(“教育机构”、“机构”);
警报(id)
});
//获取ID,然后正确选择元素,而不是获取两个ACV
函数GetDataListOptionValue(datalistInputId,dataListId){
//datalistInputId将类似于“datalisInput”
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)
返回(num);
}

首先,您正在使用,您的浏览器或其他东西可能不支持此功能。您使用的ACV
教育机构
机构
。因此,您应该做的是去掉这些,然后使用jQuery选择输入,如下所示:

$(“#教育建立”)。关于('input',function(){
//我们不会传递这些ACV,而是传递ID(ID是字符串)
var id=GetDataListOptionValue(“教育机构”、“机构”);
警报(id)
});
//获取ID,然后正确选择元素,而不是获取两个ACV
函数GetDataListOptionValue(datalistInputId,dataListId){
//datalistInputId将类似于“datalisInput”
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)
返回(num);
}



使用代码修改函数后,我在Chrome中得到了“未捕获错误:语法错误,无法识别的表达式:#[object HTMLInputElement]”console@mirosz现在已修复,请签出(:是的,单击按钮可以正常工作。我需要检索datalist更改的值(请参阅我编辑的问题)因为某种原因,我还得额外的钱NaN@mirosz所以,当用户输入的值存在于数据列表中时,您想获取id?请检查我的答案。只需复制粘贴或手动输入。使用代码修改函数后,我得到“未捕获错误:语法错误,无法识别的表达式:#[object HTMLInputElement]”含铬console@mirosz现在已修复,请签出(:是的,单击按钮可以正常工作。我需要检索datalist更改的值(请参阅我编辑的问题)因为某种原因,我还得额外的钱NaN@mirosz所以,当用户输入的值存在于数据列表中时,您想获取id?请检查我的答案。只需复制粘贴或手动输入。首先,您有一些不平衡的父项。我假设这些只是输入错误。我只是尝试了您的代码,它正在工作。是的,它正在工作。但在给出更正后ect值它提供了一个带有“NaN”消息的额外对话框检查我在答案中创建的sinppet。这只是您的代码,它正在工作。谢谢。看起来问题可能在其他地方。当数据列表更改时,我正在调用此函数。请