gpt4 book ai didi

javascript - 如果输入文本不在数据列表中则禁用提交

转载 作者:行者123 更新时间:2023-11-28 03:20:22 25 4
gpt4 key购买 nike

如果在此输入中输入的文本不在datalist中,我想禁用此提交按钮。

<label><h5>Code application</h5></label>
<input
name="applicationCodeId"
id="applicationCodeId"
list="applicationCodeList"
class="disableAutoComplete"
/>
<datalist id="applicationCodeList">
<div th:each="applicationCode : ${applicationCodes}">
<option
name="applicationCodeId"
th:text="${applicationCode.applicationCodeName}+ ' : ' +${applicationCode.projectName}"
th:value="${applicationCode.getId()}"
></option>
</div>
</datalist>

最佳答案

您可以信赖 disabled您的提交按钮/输入的属性:每次修改输入内容时更新它。一个选项是使用 querySelector使用选择器 option[value="..."] 检查当前文本是否与选项值匹配。类似这样的事情:

function myFunction() {
const currentValue = document.getElementById('applicationCodeId').value;
document.getElementById("mySubmit").disabled =
currentValue.length === 0 ||
document.querySelector('option[value="' + currentValue + '"]') === null;
}
<label><h5>Code application</h5></label>
<input
name="applicationCodeId"
id="applicationCodeId"
list="applicationCodeList"
class="disableAutoComplete"
oninput="myFunction()"
/>
<datalist id="applicationCodeList">
<option value="Option 1">
<option value="Option 2">
</datalist>
<input type="submit" id="mySubmit" disabled>

请注意,使用 <datalist> 时,选项值优先于文本:您可以在输入中键入文本,但它将被值替换。这就是为什么上述解决方案基于值:)

<小时/>

请注意,数据列表应仅包含 <option>元素:无 <div> (参见documentation)。选项中的名称也可以删除。

由于上述解决方案适用于 value 属性,因此您的代码可能会变为:

<datalist id="applicationCodeList">
<option
th:each="applicationCode : ${applicationCodes}"
th:value="${applicationCode.applicationCodeName}+ ' : ' +${applicationCode.projectName}"
>
</datalist>

您必须在服务器端检索 ID ;)

关于javascript - 如果输入文本不在数据列表中则禁用提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59216388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com