使用Javascript中的操作提交表单

时间:2011-02-23 07:11:30

标签: javascript forms action

我正在尝试使用javascript提交表单。这是我用来将操作设置为表单然后提交它的代码。这两行是在为按钮定义的onclick方法中。

document.form1.action = fin_string;
document.forms["form1"].submit();

这里的问题是当我这样做时,fin_string会被其他东西替换掉。例如。当fin_string =“http://www.gmail.com”时,这是有效的,但是当我将fin_string保持为其他字符串时(相对于带有附加参数的当前路径),它会被更改。 alert(fin_string),正确显示字符串但是当我使用字符串在表单上设置操作并提交它时,它会被更改。

这就是我想要的fin_string(相对于当前路径)

remote-service/FeedMergerManualTrigger?locales=en_GB-en_SG&deleteOutputFile=Y&localFilePath=c:/go/

但是当我为其分配一个动作并提交表单时,这就是浏览器的用途。

remote-service/FeedMergerManualTrigger?LMN=UK&ZJ=SG&localResourcesMode=on&EUPath=c:/go/&delete_op=Y.

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

有了这样的代码,它将分配隐藏的表单元素而不是添加到查询字符串,因此它不会被更改:

var fin_string = "remote-service/FeedMergerManualTrigger";
var arrData = {"locales": "en_GB-en_SG", "deleteOutputFile": "Y", "localFilePath": "c:/go/"};
var oForm = document.forms["form1"];
oForm.action = fin_string;
for (var key in arrData)
    AddOrUpdate(oForm, key, arrData[key]);
//encodeURIComponent(arrData[key])
oForm.submit();

function AddOrUpdate(oForm, sName, sValue) {
    var oInput = oForm.elements[sName];
    if (!oInput) {
        oInput = document.createElement("input");
        oInput.type = "hidden";
        oInput.name = sName;
        oForm.appendChild(oInput);
    }
    oInput.value = sValue;
}