我试图用javascript设置表单的动作!
为什么它不会对这段代码起作用:(会发生什么是页面被提交给自己,如'action =“#”'
function validateForm() {
var nr_of_pics=document.getElementById("annonsera_nr_pics").value;
var name = document.getElementById("annonsera_name");
var tel = document.getElementById("annonsera_tel");
var email = document.getElementById("annonsera_email");
var area = document.getElementById("annonsera_area");
var community = document.getElementById("annonsera_area_community");
var category = document.getElementById("annonsera_category");
var subcats = document.getElementById("annonsera_subcats").getElementsByTagName("select");
var headline = document.getElementById("annonsera_headline");
var description = document.getElementById("annonsera_des");
var price = document.getElementById("annonsera_price");
if (nameValid(name) && telValid(tel) && emailValid(email) && areaValid(area) && communityValid(community) && categoryValid(category) && subcatsValid(subcats) && headlineValid(headline) && descriptionValid(description) && priceValid(price)){
var form = document.getElementById("annonsera").action;
form = "bincgi/verify_"+category+".php";
alert (form);
return true;
}
return false;
}
和表格:
<form name="annonsera" id="annonsera" method="post" enctype="multipart/form-data" onSubmit="return validateForm();">
顺便说一句,警报框也不会出现! 另外,在HTML中手动设置表单操作可以正常工作,并且表单已正确验证!
答案 0 :(得分:2)
var form = document.getElementById("annonsera").action;
form = "bincgi/verify_"+category+".php";
这些线条没有做你认为他们正在做的事情。
第一行是创建一个名为'form'的变量,并将表单的当前操作作为字符串复制到该变量中。然后第二行将变量设置为新值,但表单的操作未被更改,因为该变量仅包含表单操作的副本。
这就是你想要的:
var formElement = document.getElementById("annonsera");
formElement.action = "bincgi/verify_"+category+".php";
但是,我不知道为什么你的警报箱根本没有出现。您确定所有有效方法实际上都已通过吗?
答案 1 :(得分:0)
像
一样简单 document.annonsera.action = "bincgi/verify_"+category+".php"
并提交表格
document.annonsera.submit()
答案 2 :(得分:0)
试试这个:
document.getElementById("annonsera").action = "bincgi/verify_"+category+".php";
您的代码的问题在于您首先将action属性读入变量:
var form = document.getElementById("annonsera").action;
然后将form
变量设置为新字符串,但这不会更新DOM元素的值。