javascript - 如何使用 JavaScript 验证下拉列表?
问题描述
当我提交按钮而不选择任何选项时,我会显示错误。它可以工作。但是当我在选择任何选项后点击提交时,这里的问题仍然存在。如果选择了选项,我将无法删除错误。
selected.Can anyone help me please
<form id="myForm">
<select id="logs" data-placeholder="Type here to find device"
name="tags[]"
multiple
class="chosen-select form-control"
required>
<option value=""></option>
<option value="ASA" > ASA </option>
<option value="ISE" > ISE </option>
<option value="Windows" > Windows </option>
<option value="ATA" > ATA </option>
<option value="Alliance"> Alliance </option>
<option value="Proxy" > Proxy </option>
<option value="Csp" > CSP </option>
</select>
<button type="submit">Submit</button>
<p id="loggingError" style="color: red; font-size: small;"></p>
</form>
var logs = document.getElementById('logs');
var myForm = document.getElementById('myForm');
function loggingCheck(event)
{
if (logs.selectedIndex == 0 )
{
document.getElementById('loggingError').innerHTML="Please select at least one logging devices";
event.preventDefault();
}
else
{
document.getElementById('loggingError').innerHTML="";
}
}
myForm.addEventListener('submit',loggingCheck);
解决方案
如果您正在使用该required
属性并希望使用自己的消息,则必须管理reportValidity和setCustomValidity方法
const myForm = document.getElementById('my-form')
myForm['tags[]'].oninvalid = evt =>
{
evt.target.setCustomValidity('Please select at least one logging devices')
}
myForm.oninput = evt =>
{
// if (evt.target.name==='tags[]') ...
evt.target.setCustomValidity('')
evt.target.reportValidity()
}
myForm.onsubmit = evt => // if the form has error the submit event doesn't happen
{
evt.preventDefault()
console.log('the form is now supposed to be submitted...')
setTimeout(() => { console.clear() }, 2000) // clear log about 2s;
}
input:invalid { border-color: crimson; }
<form id="my-form">
<select name="tags[]" multiple required size="7">
<option value="ASA" > ASA </option>
<option value="ISE" > ISE </option>
<option value="Windows" > Windows </option>
<option value="ATA" > ATA </option>
<option value="Alliance"> Alliance </option>
<option value="Proxy" > Proxy </option>
<option value="Csp" > CSP </option>
</select>
<button type="submit">Submit</button>
</form>
推荐阅读
- python - 在 Selenium Python 中编写正确的 Xpath
- javascript - 在 React 的 if 语句中修改数组内即将到来的布尔值
- javascript - 使用未定义的javascript更改画布的颜色
- python - node-pre-gyp install--fallback-to-build --library=static_library
- javascript - 为什么路由器链接不起作用,尽管我使用与 href 相同的组件链接并且它可以工作?
- c++ - SqlLite c++,可以创建数据库但不能向表中插入任何东西
- matlab - 使用matlab中的行和列删除来减小给定图像的大小?
- flutter - 无法将自定义队列添加到适用于 android 的 audio_service 0.8.0 颤振
- python - 如果股价在从雅虎上刮下来后发生一定百分比的变化,则打印股价
- node.js - 使用节点 SDK 在超级账本结构中注册和注册时遇到错误