2013-03-09 57 views
1

我有一个文本字段用于在表单中输入地址,并且还包含与包含设置的自定义地址的文本的链接。如果用户开始输入地址,则存储在数据库中的地址将显示在下面的帮助下ajax.My的问题是,当用户点击文本框右侧的链接(这是设置自定义地址),我不想显示事件为ajax.I需要要知道,如果文本框的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;"/> &nbsp; or 
<a id="custom_venue_link" href="" 
onclick="set_custom_address();return false;">custom address</a></li> 
+1

是的,两者都是可能的。你可以用'element.id =“newid”;'改变一个元素的ID。您可以通过操作DOM来添加另一个文本框。我想,你还没有真正提供足够的信息让某人用代码发布答案。 – Barmar 2013-03-09 09:48:50

+0

@Barmar如果用户点击链接,这意味着用户正在创建一个不在数据库中的新地址。 – Techy 2013-03-09 09:51:29

+0

好的,但改变文本框元素的ID与那个有什么关系? – Barmar 2013-03-09 09:53:24

回答

2

而不是addind另一个输入或鲍勃迪伦它的ID,您可以附加和码dettach事件处理程序。

当网页加载,你应该重视的事件:

document.getElementById("venue").onkeyup = function(){showData(this.value);}; 

然后在set_custom_address可以dettach它:

document.getElementById("venue").onkeyup = null; 

和结束时的情况下,用户开始编辑重新插入再次输入值(或者您可以只读)。 我看到你在隐藏它。


编辑:下面是代码,使其只读,以防万一:

document.getElementById("venue").setAttribute("readonly", "readonly"); 

你也可以像这样删除它:

document.getElementById("venue").removeAttribute("readonly"); 

注1:我不知道是否有任何事情会导致onkeyup被触发,但如果该字段是只读的,它将不会从用户输入中生成该事件。注意2:有人提到,数据库中的地址显示在该字段下,我不知道是否需要额外的步骤来隐藏该地址。也许一个函数“hideData()”是必要的。

+0

如果我写document.getElementById(“场地”)。onkeyup = null;在set_custom_address()里面,它会工作吗? – Techy 2013-03-09 10:00:46

+0

@AnazA是的,它会工作。 – Theraot 2013-03-09 10:04:09

+0

衷心感谢 – Techy 2013-03-09 10:07:40