javascript - JS - 如何在文本为空且未勾选复选框时停止表单提交?
问题描述
到目前为止,这是我的脚本。目的是在文本框为空时不允许提交,
var chk = document.getElementsByName('termsChkbx')[0];
var btn = document.getElementsByName("submit")[0];
var fname = document.forms["bookingForm"]["forename"].value;
var sname = document.forms["bookingForm"]["surname"].value;
var cname = document.forms["bookingForm"]["companyName"].value;
document.getElementsByName('termsChkbx')[0].onclick = function() {
textCol()
};
function textCol() {
if (chk.checked) {
document.getElementById("termsText").style.color = "black";
document.getElementById("termsText").style.fontWeight = "normal";
btn.disabled = false;
if (fname == null || fname == "", sname == null || sname == "") {
btn.disabled = true;
}
}
else {
document.getElementById("termsText").style.color = "red";
document.getElementById("termsText").style.fontWeight = "bold";
btn.disabled = true;
}
}
我知道第二个 if 语句中的逻辑有问题,但我不知道如何在勾选框时允许按下按钮,但在字段为空时不允许按下。
<p><input type="submit" name="submit" value="Book now!" disabled=""></p>
这是按钮的 HTML,我无法更改。任何帮助,将不胜感激。
解决方案
我不认为你想使用,
in if (fname == null || fname == "", sname == null || sname == "")
。你可以简化它:
var chk = document.getElementsByName('termsChkbx')[0];
var btn = document.getElementsByName("submit")[0];
var fname = document.forms["bookingForm"]["forename"];
var sname = document.forms["bookingForm"]["surname"];
function validate() {
if(fname.value == "" || sname.value == "" || !chk.checked) {
btn.disabled = true
} else {
btn.disabled = false
}
}
validate()
chk.addEventListener("click", validate)
fname.addEventListener("change", validate)
sname.addEventListener("change", validate)
<form name="bookingForm">
<input type="text" name="forename">
<input type="text" name="surname">
<input type="checkbox" name="termsChkbx">
<input type="submit" value="Submit" name="submit">
</form>
推荐阅读
- image - 图像 tintColor React-Native 中的线性渐变
- django - 主管启动 celery worker,生成它并以状态码退出(退出状态 1;不是预期的)
- laravel - 布局问题请看附件
- c++ - 如何在 gcc 窗口中使用 SFML
- c++ - 如果 x,递归不起作用,我的函数只能删除第一个元素
- html - 无法覆盖用户代理样式表
- java - 结合从 JSON 加载的两个地图块
- xamarin - System.Serialization Exception ===> Vimeo 视频无法在 Xamarin.forms App 上的 IOS/Android 上播放
- c# - 为什么“dotnet msbuild”在第一次运行时会失败并出现警告,然后第二次运行成功?
- javascript - 如何输出附近的搜索?