我有一个表单(在ColdFusion程序中 - 并不重要)有两个提交按钮(它们看起来彼此完全不同),它们根据点击的按钮提交到不同的程序。表格如下:
<form name = "pers3aa"
action = ""
method = "post"
onkeypress = "return event.keyCode != 13;"
onsubmit = "return subpers3aa('#coltop#');">
每个按钮调用一个Javascript函数来设置动作 - 它们看起来像这样:
<input type = "Submit"
name = "subpers4"
class = "submitbut"
value = "Submit"
onclick = "persaasubmit('person4aa.cfm')" >
和
<input type = "Submit"
id = "delbut"
class = "onoffbut"
value = "Delete this Value"
onclick = "persaasubmit('persdel.cfm')">
javascript函数persaasubmit是:
function persaasubmit(target) {
document.pers3aa.action = target;
}//end function persaasubmit
到目前为止,这么好 - 这很有效。但是,在另一个程序中,我有一个不同的形式“xrefform”,我提交了类似的功能:
function aasubmit(target) {
document.xrefform.action = target;
}//end function aasubmit
这种情况在我的整个系统中都会发生,并且各种javascript提交功能正在激增。所以我尝试通过将表单名称作为参数发送来组合它们:
function generalsubmit(formname, target) {
document.formname.action = target;
}//end function generalsubmit
这不起作用。我推断Javascript找不到名为“formname”的表单,因此它不提交任何内容。我想可能有Javascript提交传递给它的formname的语法,但我不知道那可能是什么。有人可以帮忙吗?
答案 0 :(得分:1)
在对象文档中有一个&#39;表格&#39;阵列。您可以访问特定表单:
document.forms['myform']
答案 1 :(得分:0)
你走在正确的轨道上;但是,这不是点符号在JavaScript中的工作原理。
考虑一下:
var someVar = "Foo Bar",
someObject = { someVar: someVar };
// someObject = {"someVar": "Foo Bar"}
someObject[someVar] == undefined
// Resolves to the 'Foo Bar' property in someObject
someObject.someVar == 'Foo Bar'
// Resolves to the 'someVar' property in someObject
someObject['someVar'] = 'Foo Bar'
// Resolves to t 'someVar' property in someObject
这可以作为您问题中函数的直接替换:
function generalsubmit(form, target) {
form = document.forms[form];
if (form) {
form.target = target;
}
}