javascript - 在 onsubmit 上调用 javascript 来发布用户输入

标签 javascript forms function operator-keyword onsubmit

我在这个 onsubmit 上遇到了非常困难的时期。每次我尝试调用我的函数时,我什么也得不到。一旦我点击“提交”,我的表格就会清空,什么也不会发生。它应该调用一个新页面来显示用户输入的信息。

我在 stackoverflow 上问了一个又一个问题,但找不到答案。我刚刚学习 Javascript,这对你们来说可能是一个非常简单的问题,但由于我在这里找不到任何新手级别的内容,所以我只能向你们推荐我的“简单”答案。我不确定如何在没有大量代码的情况下提交这个问题...所以...我对冗长的代码表示歉意。我只使用了表单中的一个示例。

<script>
function ScheduledEvent(evtDate){
    evt.evtDate = evtDate;
    evt.PrintEvent = PrintEvent
}
function PrintEvent(){
    document.write("<p> You have scheduled an event on " + evt.evtDate);
}
function Validate(){
    with (document.evtForm){
        events = new ScheduledEvent(evtDate.value);
    }
    with (events){
        evt.PrintEvent();
    }
    return true;
}
</script>

<form name="evtForm" onsubmit="Validate()">

如果您需要查看更多代码,我将很乐意效劳。所有表单名称和变量都匹配。我无法弄清楚这一点,希望得到您的帮助。

最佳答案

那么你做错了。这背后有很多原因 -

  1. 您的 Validate() 方法返回 true,这意味着它不会停止表单提交。因此,表单将被提交,同一页面将重新加载。这解释了为什么它被重置。这是在本地发生的,因此您无法看到页面刷新。

  2. 您在提交表单之前调用 PrintEvent()。因此,document.write实际上是将值写入文档中,但写入后,页面将被回发并重新加载。所以你看不到更新的信息。

  3. 您正在使用document.write,它仅在当前页面上写入,因此不会将您带到其他页面。请记住,每次加载页面时,javascript 也会加载,这意味着您的 javascript 对象和状态都会丢失并重新初始化。

  4. 当 javascript 使用 document.write 编写时,它不会清除先前呈现的项目,包括 HTML、表单以及该页面上已呈现的任何内容。它只会将这一行附加到 body 标记的底部。要进行测试,请从 validate 返回 false,您将能够看到写入的项目。

  5. 如果您愿意使用新页面,则必须将该值保存到某个位置,可以在服务器上,也可以使用客户端本地存储cookie。尝试用谷歌搜索一下如何做到这一点。

关于javascript - 在 onsubmit 上调用 javascript 来发布用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23401625/

相关文章:

javascript - 对象传播过滤键

javascript - 带有 call saga 效果的 JS ES6 "yield array.map"的结果是什么?

javascript - 按照 tab-index 的顺序循环 jQuery 选择

c++ - 如何比较两个函数的签名?

c# - 新(修饰符)函数的实际用法?

python - 如何将字符串变量从 python 传递给 PowerShell 函数

javascript - 在 React 类组件中使用 ResizeObserver

javascript - Expressjs 同步/异步中间件问题——如何解决?

forms - Access-在Access中通过表单输入重复项以显示现有记录

javascript - 如何在没有任何框架代码的情况下使用 JavaScript 选择自定义选择组件的选项?