javascript - 表单不会提交并给出错误信息
问题描述
我有一个包含服装尺码的表格。当用户选择尺寸时,他们可以提交表单。
我的问题是用户可以提交表单,无论他们是否选择了尺寸。代码要复杂得多,但下面是表单的分解,下面是添加到包按钮。
<form>
<ul>
<li>
<ul>
<li class="size-value"></li>
<li class="size-value"></li>
<li class="size-value"></li>
<li class="size-value"></li>
</ul>
</li>
</ul>
</form>
<div class="mt10">
<input type="submit" class="modalAddToBagButton">
</div>
当用户选择尺寸时,selected
会添加类,因此它会显示为class="size-value selected"
. 此功能运行良好。在我的.js
文件中,我想添加一个if/else
语句,如果<li class="size-value">
已经给了一个类selected
(用户点击了这个大小),那么表单将被提交,但是如果没有<li>
类selected
,表单将抛出一个错误消息。以下是我认为应该添加if/else
语句的函数部分:
}).on('click', '.modalAddToBagButton', function(e) {
e.preventDefault();
// Add if/else statement here. if list items have a class selected, form can be submitted. if no list items have class selected, then display this error message.
$(this).closest("#dialog-addToBag").find('form').submit();
});
我的问题是:我该如何写这个if/else
声明?我不确定如何从我的输入按钮访问表单和列表项,因为它们在 div 之外并且非常嵌套,并且要监听是否有任何列表项已被赋予类selected
以便可以提交表单,如果不抛出错误消息。有人能帮忙吗?
更新:
此功能适用于不提交表单并在未选择尺寸时显示错误消息,但是即使选择了尺寸,错误消息仍然会出现并且不会提交表单。谁能弄清楚为什么?
.on('click', '.modalAddToBagButton', function(e) {
e.preventDefault();
var x = document.getElementsByClassName("es-value");
var i = x.length;
var selected = false;
while (i--) {
if (x[i].hasAttribute("selected")) {
selected = true;
}
}
if (selected == false) {
//Displays error
$("#errormessage").show();
} else {
$(this).closest("#dialog-addToBag").find('form').submit();
}
});
解决方案
怎么样
<div id="errorDiv"></div>
在你的javascript函数里面
}).on('click', '.modalAddToBagButton', function(e) {
e.preventDefault();
var x = document.getElementsByClassName("size-value");
var i = x.length;
var selected = false;
while(i--)
{
if (x[i].hasAttribute("selected"))
{
selected = true;
}
}
if(selected == false)
{
//Displays error
document.getElementById("errorDiv").innerHTML = "Please select a size.";
} else {
//Submit form
$(this).closest("#dialog-addToBag").find('form').submit();
}
});
推荐阅读
- c++ - 如何使用 for 循环将元素添加到 vec 或 rowvec?
- r - 无法获取有关列的基本统计信息
- import - 如何从父目录中的模块导入(Python)
- java - 插入数据库时如何查找意外令牌的原因?
- javascript - 更改每个函数的增量作为变量运行
- javascript - 从 JavaScript 数组中获取接下来的两个进行中的元素
- sql-server - 带有 IN 运算符的条件 where 子句不起作用
- python - 使用 ECB 模式加密解密字节时遇到问题
- .htaccess - 如何将 https://www.hhl.com/articlename.html?a=b 重定向到 https://www.hhl.com/articlename/?a=b
- iis - 存在 ADFS 401 问题的 SSO