javascript - 表单提交时的 sessionStorage
问题描述
我正在创建一个表单,并且该onsubmit
属性有一个表单验证布尔方法。在方法结束时,不管是否没有返回无效输入false
,sessionStorage
变量都将被更新为,true
以便在再次加载页面时重新检查变量。false
为什么无论输入都没有返回,变量仍然是false
?请记住,表单action
属性指向同一页面(表单页面)。这就是我的验证的样子:
<form action="form.jsp" onsubmit="return validate()">
<input type="text" id="foo" />
<input type="submit">
</form>
var input=document.getElementById("foo"); // textbox
function validate()
{
if (input.value.trim() === "") {
return false;
}
sessionStorage.setItem("submitted","true");
}
请记住,所有表单输入都存在,并且即使函数没有返回 sessionStorage 变量也不会更新false
。
解决方案
尝试将 sessionStorage 调用包装在 try/catch 中以查看失败的原因。
function validate() {
var input = document.getElementById("foo"); // textbox
console.log('validate', input);
if (input.value.trim() === "") {
return false;
}
try {
sessionStorage.setItem("submitted", "true");
} catch (e) {
console.log(e);
return false;
}
// (for demostration purposes return false)
return false;
}
<form onsubmit="return validate()">
<input type="text" id="foo" />
<input type=submit>
</form>
或者,您可以使用 DevTools 中的“保留日志”复选框来保留控制台错误。
推荐阅读
- r - 基于多个变量过滤数据
- c - 查找字符串中数字(0-9)的频率
- actionscript-3 - Nape Physics:碰撞问题(跨瓷砖移动)
- python - python os.path.exists 返回 false
- ruby-on-rails - 如何解析has_many关联before_save
- python-2.7 - Jython 2.7.1 + ftfy 4.4
- excel - 如何将范围数据导入 VBA?
- wpf - WPF 可重用标签和文本框行
- swift - 其中 Self: UIViewcontroller -> Compiler 认为我正在处理非 AnyObject 实例
- javascript - 通过 vanilla Javascript 读取参数