【发布时间】:2020-01-14 20:21:04
【问题描述】:
免责声明:这是我的第一个 HTML、CSS、JavaScript 项目。请原谅这里的任何误用词汇。
我正在为用户制作一个基本的网络表单,以进行一些通过失败检查。我将所有单选按钮设置为必需。我修改的基本项目的实现跳过了按钮部分,而是使用onclick 函数将任何非空白值转换为 JSON 列表。然后我编写了一些 JavaScript 来允许用户下载该列表。
在调试时,我意识到提交按钮忽略了所需的属性,但我正在使用的新清除所有按钮正确地确认了它们。
我目前正在调试 4 种方法,但决定咨询更有经验的人会教我更好的基础知识。
还有一个本地存储 JavaScript,如果有人需要查看它,我可以编辑它。
$(document).ready(function() {
$("#btn").click(function(e) {
var jsonData = {};
var formData = $("#myform").serializeArray();
$.each(formData, function() {
if (jsonData[this.name]) {
if (!jsonData[this.name].push) {
jsonData[this.name] = [jsonData[this.name]];
}
jsonData[this.name].push(this.value || '');
} else {
jsonData[this.name] = this.value || '';
}
});
console.log(jsonData);
e.preventDefault();
function download(content, fileName, contentType) {
var a = document.createElement("a");
var file = new Blob([content], {
type: contentType
});
a.href = URL.createObjectURL(file);
a.download = fileName;
a.click();
}
download(JSON.stringify(jsonData), 'list.json', 'json');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="myform" type="post">
<fieldset>
<legend>Some label </legend>
<div class="elements">
<label for="name">1) Test 1:</label>
<input required="required" type="radio" value="pass" name="usb1" size="20" /> [PASS]
<input required="required" type="radio" value="fail" name="usb1" size="20" /> [FAIL]
</div>
<p></p>
<div class="elements">
<label for="name">2) Test 2:</label>
<input required="required" type="radio" value="pass" name="usb2" size="20" /> [PASS]
<input required="required" type="radio" value="fail" name="usb2" size="20" /> [FAIL]
</div>
<!-- ignores required fields -->
<div class="submit">
<input type="submit" id="btn" name="btn" class="btn" value="Submit" />
</div>
<!-- Works same as above as far as I'm aware -->
<button type="button" id="btn" name="btn" class="btn">Submit</button>
<!-- //working correctly -->
<button type="button" id="clr" name="clr" class="clr">Clear</button>
</fieldset>
</form>
【问题讨论】:
-
按钮点击与提交无关
-
我从不理解使用所需单选按钮的愿望。单选按钮应该用于在多个选项之间进行选择,其中一个是默认选项。所以应该有三个单选按钮:未知、通过、失败,未知是默认值。验证将是必须检查通过或失败,而不是未知。然后,如果人们在准备好之前不小心检查了通过或失败,他们就可以撤销他们的选择。
-
@HereticMonkey 我认为如果您正在运行自己的表单验证(出于数据完整性目的,这可能是最佳实践),您提出的建议是一种处理方式。但是,DOM 上的表单中内置了验证触发器,单选按钮组上的
required属性就是其中之一。如果可能的话,我宁愿在我的代码中没有额外的输入来维护和调试,个人。但我认为我们已经完全进入了这里的意见领域。
标签: javascript html