如何在提交之前将另一个字符串附加到表单的值?

时间:2016-03-12 10:27:43

标签: javascript html forms

我有一个类似下面的表单,我希望在提交之前将“隐藏”项中的值附加到“搜索”项目:

<form action="...." method="get" accept-charset="utf-8"  >
<input type="search" name="a1" results="0" value="" placeholder="some texts" class="search-form-input"><!-- search value -->
<input name="a1" type="hidden" value="string to be added"><!--hidden value-->
</form>

但结果网址会是这样的... a1 = string + to + be + added

稍后我尝试使用javascript来获取搜索值和隐藏值并将它们组合起来:

<form action="...." method="get" accept-charset="utf-8"  >
<input type="search" name="a1" results="0" value="" placeholder="some texts" class="search-form-input"><!-- search value -->
<input name="a2" type="hidden" value="string to be added"><!--hidden value-->
<script language="javascript">
var a;
a =     document.getElementsByName('a1').value + 
document.getElementsByName('a2').value;
alert(a);
</script>    </form>

但是弹出警报说:NaN。

如何在提交到另一个cgi-page之前使用javascript联合2值?

2 个答案:

答案 0 :(得分:2)

正如Aycan所说,或者你可以使用Forms集合:

document.forms[0].a2.value;

但是如果你从表单的提交监听器运行它,那就更容易了:

<form onsubmit="this.a1.value += this.a2.value" ...>

虽然最好使用一个函数来做到这一点:

<form onsubmit="addValue(this)" ...>

...

function addValue(form) {
  form.a1.value += form.a2.value;
}

答案 1 :(得分:1)

getElementsByName返回一个元素数组。你可以得到这个数组的第一个元素,它位于索引0。

var a;
a = document.getElementsByName('a1')[0].value + document.getElementsByName('a2')[0].value;
alert(a);