【问题标题】:I called js function in form submit...all browsers working fine except IE6我在表单提交中调用了 js 函数...除 IE6 之外的所有浏览器都可以正常工作
【发布时间】:2011-02-28 20:17:12
【问题描述】:
function createTemplate() {
   createformlayers(x, y,z);

   windowResizeRefresh() ;
}
Layers1.text(x,y,z)
{
  //some codes go here
}

function createformlayers(eid)
{
  var newdiv = document.createElement('div'); 
  newdiv.setAttribute("id",eid);
  newdiv.innerhtml ='<form action="javascript:Layers1.text('test',200,200)"></form>';
}

function windowResizeRefresh() {
  for (var n = 0; n < Layers.length; n++) {
    fid = 'form' + n;    
    document.getElementById(fid).submit();
  }
}

<body onload="createTemplate()">

【问题讨论】:

  • 没有收到任何错误消息...但是当我在提交行下方提供警报功能时它可以工作
  • 希望你没有表单域(或按钮) name="submit"...
  • 是的,我没有将任何元素命名为“提交”
  • 表单的操作是什么?你的 Layers 对象到底是什么? DOM 中有什么?
  • 表格也会即时创建..

标签: javascript function forms submit


【解决方案1】:

您可以将 IE 配置为在遇到错误时向您显示警告。此警告可能会为您提供有关失败原因的线索。如果有多个错误,对话框上还有一个上一个按钮很有用,以前的错误往往需要先解决。

如果您在同一台计算机上安装了 Microsoft Office。您可以在“脚本调试”的 Office 设置(在添加/删除程序下)中添加/删除共享/杂项工具。这是您可以为 IE6 获得的最佳调试器。 (除非您已经拥有 MS Visual Studio,否则我认为这是相同的,但我没有 Visual Studio,所以我不知道该怎么做)。

使用此脚本调试器,您可以打开调试器并设置断点并单步执行您的代码并检查正在发生的事情。您还可以直接从 JavaScript 错误启动调试器并检查变量/DOM/调用堆栈等。

【讨论】:

  • 你好 Lee Kowalkowski 感谢您的精彩分析,我认为逐行追踪不会是错误。将警报函数放在 document.getElementById(fid).submit() 下方时调用表单函数的东西;在这条线以下。
  • 你可以叫我'Lee',是什么警报使它起作用?任意字符串?
  • 只是我用警报功能测试了所有表单是否都像这个警报(true)一样正确提交;
  • 函数 windowResizeRefresh() { fid = 'form' + n; [n].fontid; document.getElementById(fid).submit(); }
  • 嗨,李.. 这是我的简短版本的代码。如果您现在可以解决问题,请告诉我。
【解决方案2】:

哇!刚刚意识到,您正在使用 action 属性,在 IE6 中,它可能仅限于 512 个字符(包括“javascript:”)!!!

你为什么不把所有这些都放在一个函数中呢?有action="javascript:doAction(); void 0" 什么的吗?

【讨论】:

  • ummm.. 如果工作正常,让我尝试将结果发布给您.. 因为这是我项目的最后一个错误.. 如果它解决了问题,非常感谢您。
猜你喜欢
  • 1970-01-01
  • 2017-07-03
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2013-06-21
  • 2020-09-18
  • 1970-01-01
相关资源
最近更新 更多