用javascript设置表单的操作不起作用

用javascript设置表单的操作不起作用,javascript,html,Javascript,Html,我正在尝试用javascript设置窗体的操作 为什么它不能在这个代码上工作:(发生的是页面被提交到它自己,如'action=“#”' 及表格: <form name="annonsera" id="annonsera" method="post" enctype="multipart/form-data" onSubmit="return validateForm();"> 顺便说一下,警报框也不会出现! 另外,在HTML中手动设置表单操作也很好,并且表单得到了正确的验证!将

我正在尝试用javascript设置窗体的操作

为什么它不能在这个代码上工作:(发生的是页面被提交到它自己,如'action=“#”'

及表格:

<form name="annonsera" id="annonsera" method="post" enctype="multipart/form-data" onSubmit="return validateForm();">

顺便说一下,警报框也不会出现! 另外,在HTML中手动设置表单操作也很好,并且表单得到了正确的验证!

将其简化为

document.annonsera.action=“bincgi/verify”+category+”.php“

并递交表格

document.annonsera.submit()

document.getElementById("annonsera").action = "bincgi/verify_"+category+".php";
代码的问题在于,您首先将action属性读入一个变量:

var form = document.getElementById("annonsera").action;

然后将
form
变量设置为新字符串,但这不会更新DOM元素的值。

var form=document.getElementById(“annonsera”).action;
form=“bincgi/verify”+category+“.php”

这些台词不像你想象的那样

第一行是创建一个名为“form”的变量,并将表单的当前操作作为字符串复制到该变量中。第二行然后将该变量设置为一个新值,但表单的操作没有被更改,因为该变量只包含表单操作的副本

这就是你想要的:

var formElement=document.getElementById(“annonsera”);
formElement.action=“bincgi/verify”+category+“.php”


但是,我不知道为什么你的警报框没有显示出来。你确定所有的有效性方法都被传递了吗?

尝试查看Mozilla中的错误控制台中的错误,不确定它是否适合你,但是你不能让表单指向同一个文件,并用<代码>处理不同的类别吗>开关($\u POST['category']
?如果警报不显示,则使用它来缩小问题范围。在validateFrom函数的开头放置警报。是否显示?删除“如果”子句。您的现有警报是否显示?逐个删除这些行,直到现有警报显示或两个警报彼此相邻。删除导致现有警报显示的行时,您就知道是哪一行导致了问题。Does document.annonsera.submit()如果你想提交form.document.annonsera.submit()这个也不行!同样的问题!放置一个警告框甚至不会出现…嗯,我已经测试过了,它们都是有效的!警告框不会出现!非常奇怪
var form = document.getElementById("annonsera").action;