2013-03-09 68 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