Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在语法正确的JavaScript/jQuery中,为什么执行永远不会超过`$('form').submit(函数(事件){`)?_Javascript_Jquery_Forms - Fatal编程技术网

在语法正确的JavaScript/jQuery中,为什么执行永远不会超过`$('form').submit(函数(事件){`)?

在语法正确的JavaScript/jQuery中,为什么执行永远不会超过`$('form').submit(函数(事件){`)?,javascript,jquery,forms,Javascript,Jquery,Forms,我尝试在本地运行一些JavaScript/jQuery进行测试。它以$'form'.submitfunctionevent{开头,但从未超出此范围。我在该行后面放了一个console.log。它从未执行。我知道正在执行js,因为该行之前的console.log确实执行。a不会给出错误 JavaScript: 在下面的代码段中,表单显示正确,但在提交时,控制台会闪烁一条错误消息一秒钟,然后消失。它显示的时间太短,无法读取。然后,结果窗格中会显示“自定义错误模块无法识别此错误”的错误消息 另外,如果

我尝试在本地运行一些JavaScript/jQuery进行测试。它以$'form'.submitfunctionevent{开头,但从未超出此范围。我在该行后面放了一个console.log。它从未执行。我知道正在执行js,因为该行之前的console.log确实执行。a不会给出错误

JavaScript:

在下面的代码段中,表单显示正确,但在提交时,控制台会闪烁一条错误消息一秒钟,然后消失。它显示的时间太短,无法读取。然后,结果窗格中会显示“自定义错误模块无法识别此错误”的错误消息

另外,如果愿意,请检查js的其余部分是否正确。我要做的是创建一个对象数组,表单中每个元素一个对象。每个对象都应该具有元素{'index':n,'room':n.value}的索引位置和值

在他的回答中,他做了一些类似的事情,我尝试在本地运行。虽然它在他的代码段中运行,但当我在本地运行它时,它会产生一个TypeError,querySelector'My-Form'返回null。我复制并粘贴了他的js和HTML。该表单在标记中的id=My Form。此外,语法检查器返回几个错误。因此,我不是一个无法实施他的解决方案或使其适应此问题。注意:它确实在运行

非常感谢你的帮助

片段:

$'form'.submitfunctionevent{ const SelectElms=$'select'; var a=[]; var selectVals=Array.fromSelectElms.reducea,n=>{ ifn.value&&n.value!=“不确定”&&n.value!=“不参加”{ a、 推{ “索引”:n, “房间”:n.value } ; }//如果结束,则结束 返回a; };//结束定义箭头fn&reduce 违约事件; };//结束定义匿名fn&提交 名字 姓 电子邮件地址 08:30主讲人 不确定 出席 不出席 09:00上课 不确定 A房间 B房间 10:30上课 不确定 A房间 B房间
控制台应该闪烁几分钟,因为您没有添加任何url来提交表单,默认情况下,它假定您提交的是同一页面

结果应该类似于重新加载页面


我看到name属性中有空格。您可能想更改它,因为某些浏览器可能无法处理这些空格。

在reducer函数中,当您不向其传递初始值时,它将使用第一个元素作为累加器,因此当您认为您正在推入一个,但不是这样的情况时,它的已替换为您的第一个选择:

$'form'.submitfunctionevent{
event.preventDefault;//在下面的代码段中,表单显示正确,但在提交时,控制台会闪烁一条错误消息一秒钟,然后消失。这是提交表单并替换页面的症状-但是,运行问题中的代码段时,事件似乎被正确地默认阻止,因此表单不会获取提交,stacksnippets.net错误页面不会出现?至于null元素错误,请参阅修复,我会给您的标记事件处理程序中的延迟属性错误将停止JS的运行,并且由于您只在最后阻止默认行为,表单仍将提交。这是一个固定版本:@ChrisG哦,酷。I看到你使用地图和过滤器。谢谢你的信息。谢谢你的解释和解决方案。为什么变量a不需要初始化?另外,我知道这是不公平的,也是一个负担,但是你知道为什么当我在本地尝试时工作的fiddle代码失败了吗。执行似乎没有超出$'form'。提交行。我知道我的脚本加载ts.js文件是因为执行了我放在第一位的console.log,而没有执行在.submit行之后的console.log。我粘贴了fiddle代码。没有错误消息。我知道,这就像让医生通过电话诊断一样。@alxfyv只有在使用reduce时才需要初始化它。您将一个空数组作为第三个数组传递参数。该参数将填充到函数体中并返回。可能是因为没有加载jQuery。如果加载,则对我有效。请记住,将默认值放在函数体中,否则如果出现异常,则不会触发它。@alxfyv我一直在说第三个参数,但实际上是第二个参数。很抱歉e slipup。我发现了阻止本地执行的错误。我在脚本中添加了$document.readyfunction…},一切都是jake,hunky dory,刚刚好。你解决了一个困扰了我好几天的问题。我非常感激。@alxfyv然而,在一秒钟内 我读过,我想答案可能是错的。您说对象应该包括select元素的索引位置和值。您是指选择本身的索引还是所选选项的索引?如果是后者,那么就错了,传递的索引是select的索引。
$( 'form' ).submit(function(event) {
 const SelectElms = $( 'select' );
  var  a          = [];
  var  selectVals = Array.from(SelectElms).reduce((a,n) => {
    if(n.value && n.value !== 'unsure' && n.value !== 'not attend') {
      a.push( {
                 'index': n,
                 'room': n.value
              }
            );
    }  // end if
    return a;
  });  //  end def arrow fn & reduce
  event.preventDefault();
});  //  end def anonymous fn & submit