在一个main.html页面中,插入了另外一个frame,里面显示child.html页面。在child.html页面中有一个file控件,我想要实现的效果是在file控件的内容改变时,触发child.html页面的submit事件,因此给file定义了onchange方法,通过函数来触发。该功能在IE浏览器下正常,但是在Firefox下会提示“无效的路径”,发现关键在下面几句: var sForm = eval("window.document.attachment_form_" + sRandom);
sForm.submit();当我把"sForm.submit();"这一行注释后,不会弹出提示,但是也就不能提交表单了。有人说在Firefox下child.html里面要有submit按钮,而且其不能命名为"submit"等,我都试过了,问题依旧,请教各位了...在线等...

解决方案 »

  1.   

    你的child.html里面应该有一个form,当值file的值改变的时候,你直接提交这个表单就可以了啊,为什么要var sForm = eval("window.document.attachment_form_" + sRandom);
    转一次呢?有点搞不懂了
      

  2.   

    有两种解决方法;1.如果form內沒有submit button,firefox的submit就会失效。加上一个submit button就好了.如果不想看到submit这个按钮,可以用CSS隐藏它.
    <input type='submit' style='display:none' />2.参考http://www.cnblogs.com/backuper/archive/2009/03/23/1419829.html
      

  3.   


    正如你所说,我的这段代码就是在file值改变的时候调用的,因为我还不能直接提交,得在前面处理完一些事情之后再提交表单。不过现在不是讨论这个的时候,现在关心的是如何来解决我上面提出的问题...
      

  4.   

    对于阁下的第一种方法,我的child.html中是有submit按钮的,失败;第二种方法,没有看懂,好像也跟我的情况不太相同...
      

  5.   


    var sForm = eval("window.frames["frameName"].document.attachment_form_" + sRandom);window.frames["frameName"].document.formName;用这种方法访问form表单即可
      

  6.   

    我把原来的:
    // 其中"attachment_form_" + sRandom,是一个form名,sRandom是一个变量来的。
    var sForm = eval("window.document.attachment_form_" + sRandom);
    sForm.submit();
    改成了var sForm = eval("window.frames[\"attachment_frame_" + sRandom + "\"].document.attachment_form_" + sRandom);
    sForm.submit();
    貌似并没有触发submit提交表单...
      

  7.   

    在Firefox和Google浏览器中提交表单的语句好像和IE的"window.document.myform.submit();"不太一样,究竟应该怎么写呢?
      

  8.   

    使用document.id/document.name的方式获取元素,本身是有兼容性问题的,
    lz可以试试将 document.……改作  document.getElementById 再试试,看是否没取到元素。var sForm = document.getElementById("attachment_form_" + sRandom);
    sForm.submit();
      

  9.   

    贴出child.html的代码看看,我这里试了没得问题