我有一个文本字段用于输入表单中的地址,还有一个包含设置自定义地址的文本的链接。如果用户开始输入地址,存储在数据库中的地址将在ajax的帮助下显示在下面我的问题是,当用户点击文本框右侧的链接(即设置自定义地址)时,我不想显示ajax的事件。我需要知道,如果文本框的id可以在单击链接时更改,也可以在旧文本框上方生成另一个文本框。 我的代码是这样的:
function set_custom_address()
{
var custom_venue_link = document.getElementById('custom_venue_link');
if(custom_venue_link.innerHTML=="custom address")
{
document.getElementById('venue').style.display = "none";
document.getElementById('venue_new').style.display = "block";
document.getElementById('custom').value= "true";
custom_venue_link.innerHTML = "tag venue";
}
else
{
document.getElementById('venue_new').style.display = "none";
document.getElementById('venue').style.display = "block";
document.getElementById('custom').value= "false";
custom_venue_link.innerHTML = "custom address";
}
}
我的HTML代码是这样的:
<input id="venue" name="venue" type="text"
placeholder="Tag venue name" onkeyup="showData(this.value)" />
<input id="venue_new" name="venue_new" type="text"
placeholder="Tag venue_name" style="display:none;"/> or
<a id="custom_venue_link" href=""
onclick="set_custom_address();return false;">custom address</a></li>
答案 0 :(得分:2)
您可以通过代码附加和删除事件处理程序,而不是添加另一个输入或更改其id。
当页面加载时,您应该附加事件:
document.getElementById("venue").onkeyup = function(){showData(this.value);};
然后在set_custom_address上你可以删除它:
document.getElementById("venue").onkeyup = null;
并在最后再次附加它,以防用户再次开始编辑输入值(或者你可以只读它)。我看到你正在隐藏它。
编辑:以下是使其成为只读的代码,以防万一:
document.getElementById("venue").setAttribute("readonly", "readonly");
你可以像这样删除它:
document.getElementById("venue").removeAttribute("readonly");
注1:我不知道是否有任何导致onkeyup触发的情况,如果该字段是readonly,它将不会从用户输入生成该事件。
注2:有人提到数据库中的地址显示在该字段下,我不知道是否需要额外的步骤来隐藏它。可能需要一个函数“hideData()”。