当我在表单字段中输入时,底部的输入也应该自动写入与上述字段相同的地址。
当我在外面输入时,JavaScript im using正在工作,如下所示,但我需要在提交表单中使用它。我在控制台中遇到的错误是“TypeError:autoAddress不是函数”以下表单工作
<form id="addNews" name="address" action="addevent.php" method="post" class="addStuff" enctype="multipart/form-data">
<h3>Address1:</h3><input type="text" class="title" name="address1" onkeyup="autoAddress();">
<h3>Address2:</h3><input type="text" class="title" name="address2" onkeyup="autoAddress();">
<h3>City:</h3><input type="text" class="title" name="city" onkeyup="autoAddress();">
<h3>County:</h3><input type="text" class="title" name="county" onkeyup="autoAddress();">
<h3>PostCode:</h3><input type="text" class="title" name="pcode" onkeyup="autoAddress();">
</form>
<input type="text" name="fulladdress" class="title" id="autoAddress" />
我需要什么,不工作,在下面。我确定我只是缺少一些简单的东西。请注意底部的输入位于表单内。
<form id="addNews" name="address" action="addevent.php" method="post" class="addStuff" enctype="multipart/form-data">
<h3>Address1:</h3><input type="text" class="title" name="address1" onkeyup="autoAddress();">
<h3>Address2:</h3><input type="text" class="title" name="address2" onkeyup="autoAddress();">
<h3>City:</h3><input type="text" class="title" name="city" onkeyup="autoAddress();">
<h3>County:</h3><input type="text" class="title" name="county" onkeyup="autoAddress();">
<h3>PostCode:</h3><input type="text" class="title" name="pcode" onkeyup="autoAddress();">
<input type="text" name="fulladdress" class="title" id="autoAddress" />
</form>
JavaScript如下
function autoAddress(){
var address1 = document.address.address1.value;
var address2 = document.address.address2.value;
var city = document.address.city.value;
var county = document.address.county.value;
var postcode = document.address.pcode.value;
var parts = [
address1,
address2,
city,
county,
postcode
];
var address = new Array();
for (var i=0; i<=parts.length; i++){
if (parts[i]){
address.push(parts[i]) ;
}
}
var joined = address.join(', ');
document.getElementById('autoAddress').value = joined;
}
答案 0 :(得分:3)
<input type="text" name="fulladdress" class="title" id="autoAddress" />
我自己有这个错误,id autoAddress
在DOM中创建了一个对象。更改功能名称或ID,它将起作用
答案 1 :(得分:3)
<input type="text" name="fulladdress" class="title" id="autoAddress" />
^^^^^^^^^^^^^^^^
function autoAddress(){
^^^^^^^^^^^
这实际上可能是这里的问题 - 某些浏览器倾向于将HTML元素的ID导入到全局JavaScript命名空间中(Internet Explorer在这里是一个主要的攻击者,但是出于兼容性原因,其他浏览器已经调整了相同的行为)。这可能导致在覆盖之前加载来自JavaScripts的实际JS对象/变量。
因此,尝试将HTML元素和JavaScript函数命名为不同的东西。
答案 2 :(得分:2)
重命名该函数(或<input>
)。
当
<input type="text" name="fulladdress" class="title" id="autoAddress" />
位于表单中,对于所有<... onkeyup="autoAddress();"/>
autoAddress
,这里实际上是对具有autoAddress
id的元素的引用。当<input>
在函数之外时,就不会发生这种情况(因为<script>
标记的范围,无论你放在哪里,都有更高的优先级)。
请重命名该功能或输入(或将其留在<form>
之外)。