0

我有以下 HTML:

<body>
<form action="/test/interop/InteropServlet" method="post" id="formTester" name="formTester"> 
<input type="hidden" name="ApiName" value=""/>
<input type="hidden" name="test.userId" value="admin"/>
<input type="hidden" name="test.password" value="admin"/>
<input type="hidden" name="test.progId" value="CustomTester"/>
<input type="hidden" name="InteropApiData" value=""/>
<input type="hidden" name="TemplateData" value=""/>

我想使用 Javascript 来获取这些隐藏值并在单击按钮时设置它们。我有以下 JavaScript 方法:

function callAPI(myform) {
saveCookies();
myform.ApiName.value=document.getElementById("traceName").value;
myform.TemplateData.value=document.getElementById("templateXMLText").value;
myform.test.userId.value=document.getElementById("userIDText").value;
myform.test.password.value=document.getElementById("passwordText").value;
myform.action="http://"+document.getElementById("urlText").value + "/test/interop/InteropHttpServlet";
myform.submit();
}

这适用于名称中没有句点的隐藏输入(即 test.userId、test.password),因为我收到错误“错误:TypeError:myform.test 未定义”。我无法重命名这些隐藏的输入,因为我不维护我调用的代码并且变量必须命名为 this。

有什么方法可以从表单中读取名称中带有句点的隐藏输入?

4

2 回答 2

1

使用方括号表示法来访问名称中带有句点的元素。例如:

myform['test.userId'].value

在您的情况下,这将变为:

...
myform['test.userId'].value=document.getElementById("userIDText").value;
myform['test.password'].value=document.getElementById("passwordText").value;
...
于 2013-05-15T14:12:38.840 回答
1

在我看来,另一种选择是用于querySelector()获取特定元素:

myform.querySelector('input[name="test.userId"]').value="whatever";

演示:http: //jsfiddle.net/xjG6W/

出于视觉目的,在演示中我更改test.userIdtype="text". 输入第二个文本框并单击按钮 - 它会更改第一个文本框的值(实际上,它是一个隐藏的输入)。

参考:

于 2013-05-15T14:21:47.043 回答