【发布时间】:2022-11-09 16:26:29
【问题描述】:
我正在创建一个使用 html razor 和 javascript 进行验证的简单表单。我必须进行的一项验证是检查空字段。
预期结果:
如果用户单击提交按钮而不在输入字段中输入任何值,则会显示错误消息(在输入字段下方)。
实际结果:
即使用户在没有在输入字段中输入任何值的情况下单击提交按钮,也不会显示错误消息。似乎 html 文件根本没有与 JS 文件通信。我尝试了各种方法,例如清除浏览器缓存和检查拼写错误,但无济于事。
以下是相关代码:
表单.cshtml
@* Display error message *@
<div id="error"></div>
<form id ="form">
<div class="form-group">
<label for="deviceId">Device ID</label>
<input type="text" class="form-control" id="deviceId" placeholder="Enter Device Device ID">
</div>
@* Energy Usage *@
<div class="form-group">
<label for="energyUsage">Energy Usage</label>
<input type="number" class="form-control" id="energyUsage" placeholder="Enter Energy Usage">
</div>
<button onclick="performValidation()" type="submit">Submit</button>
</form>
@section Scripts
{
<script src="js/validation.js"></script>
}
验证.js
const deviceId = document.getElementById('deviceId')
const energyUsage = document.getElementById('energyUsage')
const form = document.getElementById('form')
const errorElement = document.getElementById('error')
function performValidation()
{
form.addEventListener('submit', (e) => {
// list to store the error messages
let messages = []
// if device ID field is an empty string or user did not pass in any device Id
if (deviceId.value === ' ' || deviceId.value == null) {
// send the error message
messages.push('Device ID is required')
// console.log('No Device ID retrieved')
}
// if there is error, prevent the form from submitting
if (messages.length > 0) {
e.preventDefault()
// check errorElement
errorElement.innerText = messages.join(', ') // to separate error elements from each other
}
})
}
【问题讨论】:
-
尝试检查输入值是否为空字符串:
deviceId.value === ''。您实际上检查了一个空格或null(这永远不会发生)。 -
Console 是你的朋友!
标签: javascript html razor