javascript - 我希望我的提交按钮控制台.记录用户在数组中输入的所有值
问题描述
示例 html:
<form id="app-form">
<label for="firstname" class="standard-label">
First Name
<input name="firstname" id="firstname" type="text">
</label>
<label for="lastname" class="standard-label">
Last Name
<input name="lastname" id="lastname" type="text">
</label>
<input id="submit-app" type="submit" name="submit" value="Submit" onclick="logValues()">
</form>
我想单击提交按钮来调用下面的 logValues 函数。
JavaScript / jQuery
function logValues() {
console.log($('app-form').serializeArray());
}
当用户完成表单时,我希望这将更新的 key:values 数组记录到控制台中。
目前我可以手动调用该函数,它将记录一个空数组,因为没有记录任何输入,但单击提交按钮什么也不做。
解决方案
执行此操作的正确方法(Javascript/jQuery):
$('#app-form').on('submit', function(){
var arr = $(this).serializeArray();
console.log(arr);
return false; // /<-- Only, if you don't want the form to be submitted after above commands
});
令人惊讶的是,您的代码确实有效。问题是在处理点击事件之后,表单正在被提交,所以页面被刷新了——你没有时间注意到控制台日志。请注意,我的解决方案不是click ,而是处理submit事件 - 那是因为您可以从此函数返回 boolean false ,这将停止任何进一步的操作(在这种情况下是提交表单)。
在此答案中了解有关其工作原理(以及为什么e.preventDefault()
不是更好的解决方案)的 更多信息。
推荐阅读
- c++ - C++ 中 std::priority_queue 的比较器部分是什么意思?
- java - 每个新行以字母推进的单词
- javascript - 将 JSON 数据集的其余值更新为特定值?
- android - 如何使sweepGradient从颤动的圆圈顶部开始应用?
- c# - UIElements 的 WPF 自动化
- batch-file - 如何通过 bat 文件向 exe 提供输入
- windows - 为系统调用挂钩 Windows 内核调度程序
- javascript - 意外令牌:名称(stateCheck)(行:23,列:4)
- java - 如何在 Android Java 中模拟触摸事件
- javascript - why won't jquery datatable respond to click?