2010-12-20 30 views
1

我有一個頁面,它使用JavaScript將一些文本框添加到頁面,然後我們嘗試基於這些稍後做一些工作。我找不到一個動態創建的JavaScript對象的名稱(在jQuery中)

雖然我有很多麻煩,但我不能返回我用js保存的'name'值。

整頁來源(儘管是簡化版本)如下。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <script type="text/javascript" src="Scripts/jquery-1.4.1-vsdoc.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     //we use live because the inputs havent been created yet. 
     $('.myclass').live('blur', function() { 

      //debugger; 
      alert('textbox selected has ID '+ $(this).attr('id')); //this returns txtInput 
      alert('textbox selected has name '+ $(this).attr('name')); //this returns null (or an empty string). 
     }); 

    AddInputTextBox("My Label: ", "txtInput", "mydiv", "MyName"); 

    }); 

    function AddInputTextBox(LabelValue, Id, divToAddTo, NameKey) { 
     //debugger; 
     var txtbox = document.createElement('input'); 
     txtbox.setAttribute("type", "text"); 
     txtbox.setAttribute("id", Id); 
     txtbox.setAttribute("name", NameKey); 
     txtbox.setAttribute("class", "myclass"); 

     alert('Textbox created with name = ' + txtbox.name); 

     var foo = document.getElementById(divToAddTo); 
     foo.innerHTML += LabelValue; 
     foo.appendChild(txtbox); 
    } 
    </script> 
</head> 

<body> 
    <div id="mydiv"> 
     <!-- placeholder --> 
    </div> 
</body> 
</html> 

所以,您可以看到,document.ready運行並創建一個文本框。 當模糊火災(箱子失去焦點) - 我可以訪問ID,類,類型等,但我無法獲得'名稱'的值。

確定它是死的簡單,但有人可以告訴我爲什麼嗎?

+1

在這裏爲我的作品:http://www.jsfiddle.net/nick_craver/K88fL /哪個瀏覽器給你的問題? – 2010-12-20 16:16:57

+1

您是否遺漏了加載jQuery的部分? – 2010-12-20 16:17:01

+1

也適用於我:http://www.jsfiddle.net/subhaze/hh8aK/ – subhaze 2010-12-20 16:19:15

回答

1

當您創建<input>元素與IE瀏覽器,你必須做這樣的:

var txtbox = document.createElement('<input name="' + NameKey + '">'); 

IE不喜歡你改變「名」的<input>的屬性,一旦它的存在,所以你必須告訴它你打電話給「createElement()」要做什麼。

有人可能會問,爲什麼你不使用jQuery來構建動態內容,因爲無論如何你已經加載了它。

編輯我認爲這是「類型」屬性,但現在我認爲這是「名」。)

+0

JavaScript是一個經過良好測試和可靠的舊方法。我只是整個頁面的現代化。如果它不能修復它。謝謝你的回答,正是我需要的。 – 2010-12-21 11:59:54

相關問題