javascript - Jquery自动完成框并不总是有效
问题描述
我在模式窗口中遇到了 jquery 自动完成框的问题。我会尽量把情况解释清楚。如果您有任何问题,请告诉我。
我有一个包含所有字段的屏幕,它是一个主要记录。我也有一组子记录。我希望用户使用子记录的模式对话框将信息添加到子记录中。子记录中的字段之一是“货币”字段。该字段应该是一个自动完成框。这个问题很简单,但两天后我仍然不知道如何解决它。用户第一次按下添加按钮时,模态窗口会完美打开。自动完成框也很有魅力。但是当用户保存第一个孩子并想通过按下添加按钮来添加第二个孩子时,模式窗口会再次打开。但后来我收到错误“未捕获的 TypeError:$(...).autocomplete 不是函数”我不知道为什么第一次一切正常,但为什么第二次出现这个错误。
编码:
打开模态窗口:
<a href="#theModal" class="nav-link btn btn-info float-right" data-
remote="/Specification/_AddSpecification" data-toggle="modal" data-
backdrop="static" data-target="#theModal"> Nieuwe specificatie</a>
对于自动完成框(我为此使用了一个类)
<script>
$(document).ready(function () {
$(document).on('focus',
'.CurrencySelect',
function () {
$(this).autocomplete({
source: function (request, response) {
$.ajax({
url: "/Currency/searchCurrencies",
type: "POST",
dataType: "json",
data: { searchValue: request.term },
success: function (data) {
//alert(JSON.stringify(data));
response($.map(data,
function (item) {
return { label: item.currency.Name, value: item.currency.Id };
}));
}
});
},
select: function (event, ui) {
//alert(this.id);
var idField = this.id.replace('String', '');
//alert(idField);
$("input[name=" + idField + "]").val(ui.item.value);
$("input[name=" + this.id + "]").val(ui.item.label);
// retrieve the exchange rate from the selected currency for the specified declarationDate.
$.ajax({
url: "/Currency/getExchangeRate",
type: "POST",
dataType: "json",
data: {
currencyId: ui.item.value,
date: $("#date").val()
},
success: function (data) {
//alert(JSON.stringify(data));
// Check if status = success
if (data.status === "success") {
// check if statusmessage = null
if (data.statusmessage == null) {
// Disablen van het veld ExchangeRate.
$("#ExchangeRateReadOnly").attr("disabled", "disabled");
// Vullen van het veld ExchangeRate via een variabele.
var er = data.Value;
$("#ExchangeRateReadOnly").val(er.toString().replace(/\./g, ','));
$("#ExchangeRate").val(er.toString().replace(/\./g, ','));
convertCurrencyToEuro();
} else if (data.statusmessage === "Exchangerate unknown") {
alert(
"Voor de geselecteerde valuta is geen geldige koers bekend. U dient deze zelf op te voeren.");
$('#ExchangeRateReadOnly').prop("disabled", false);
convertCurrencyToEuro();
} else if (data.statusmessage === "No exchangerate needed") {
alert("Er is geen koers nodig voor de geselecteerde valuta.");
$("#ExchangeRateReadOnly").attr("disabled", "disabled");
convertCurrencyToEuro();
} else if (data.statusmessage === "Invalid currency code") {
alert("Er is geen geldige valuta geselecteerd.");
convertCurrencyToEuro();
}
}
}
});
return false;
}
});
});
});
</script>
我希望有人可以帮助我解决这个问题。
请指教,
凯文
解决方案
我刚刚解决了这个问题。多么愚蠢,jquery 被加载了两次。一次在 _layout 页面中,一次在父子记录本身的页面中。从父子页面中删除它后,现在一切似乎都像魅力一样工作。
谢谢你的帮助!
推荐阅读
- html - HTML、引导模式、jQuerypre 填充步骤。当我设置选择选项 id="status" UI 坏了
- javascript - snapshot.val() 返回未定义,但它记录正确。Node.js 火力基地
- mongodb - PopOS 20 MongoDB 安装 - mongodb-org-tools 错误
- c - C 编程中的“内存”到底是什么?
- python - Tensorflow keras 时间序列预测,X 和 y 具有不同的形状
- java - 使用 Apache Beam 仅从 Kafka 主题中获取字段的子集
- apache-superset - 如何在 apache 超集中反映源代码所做的更改?
- windows - Powershell Get-Item 找不到路径
- reactjs - 在 Nextjs 中使用 getStaticProps
- c - google oauth2 应用程序访问问题