2011-06-03 46 views
1

我剛開始與MooTools的玩文字輸入的值,我不明白爲什麼會發生以下情況:如何設置MooTools的

var input = new Element('input'); 
input.set('type','text'); 
input.set('value','this is the value'); 
console.log(input); 

結果:<input type=​"text">​,所以設置value不是招沒有工作。

但是,如果我這樣做:

var input = new Element('input'); 
input.set('type','text'); 
input.set('someValue','this is the value'); 
console.log(input); 

我得到的<input type=​"text" somevalue=​"this is the value">​預期的結果。

我是否忽略了某些東西,這是我試圖不允許的,這是Chrome(11.0.696.71,OS X)中的一個錯誤還是我在做其他錯誤?

更新:感謝您的回答!你說得對,價值實際上正在設定; console.log(input.get('value'))給出了適當的值,當我將輸入對象附加到DOM時,我可以看到輸入字段中的值。

顯然,值設置並未反映爲HTML元素的屬性,但僅存儲在內部。

回答

2

您確定沒有設置該值嗎?

你什麼時候叫你得到什麼:input.get('value')

我測試了這個(在Firefox)和即使操作檯只需登錄<input type=​"text">值事實上確實被置。嘗試添加元素到頁面,你會看到它:)

+2

正要說我的[小提琴]同樣的事情(HTTP://的jsfiddle。 net/jeremyheiler/d27gv /) – Jeremy 2011-06-03 01:37:22

+1

是的,就是這樣。現在我很好奇;這是MooTools還是標準的JavaScript行爲?將留下一些其他時間來找出:)。謝謝你的幫助! – 2011-06-03 01:48:26

1

我遇到了類似的問題,這個'紅鯡魚',我已經解決了,並認爲我會分享。 我試圖做一個錶行的某些單元格可編輯,當用戶點擊該行:

var cells = this.getElements("td"); 
for (var ix=0;ix<cells.length; ix++){ 
    if (cells[ix].hasClass("edType_text")){ 
     var celltext = cells[ix].get("text"); 
     cells[ix].set('text',''); 
     var editTag = new Element ('input',{type:'text','value':celltext}); 
     editTag.inject(cells[ix]); 
    } 
} 

這似乎工作正常,但是當我點擊了電池我不能編輯它。螢火蟲和Chrome工具顯示所加入的輸入標籤作爲

<input type='text'> 

,而不是預期:

<input type='text' value='xxxxxx' /> 

然而,這是評論以上完全正常的。

發現'蓄意'錯誤?

當然,當我點擊輸入字段,它再次觸發行上的鼠標事件,從而阻止我得到輸入! : - {

爲了避免這種情況只是在if塊的末尾添加這行代碼:

editTag.addEvent("mousedown",function(event){event.stopPropagation();});