如何使用MooTools设置文本输入的值

时间:2011-06-03 01:17:38

标签: javascript mootools html-form html-input

我刚开始玩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 个答案:

答案 0 :(得分:2)

您确定没有设置该值吗?

致电时,您会得到什么:input.get('value')

我测试了这个(在firefox中),即使控制台只记录<input type=​"text">,实际上这个值确实已经设置好了。尝试将元素添加到页面中,您将看到它:)

答案 1 :(得分: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]); 
   }
}

这似乎工作正常但是当我点击单元格时我无法编辑它。 Firebug和Chrome工具显示添加的输入标记为

<input type='text'>

而不是预期的:

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

然而,如上所述,这是完全正常的。

发现'故意'错误?

当然,当我点击输入字段时,它再次触发了该行上的鼠标事件,从而阻止我进入输入! : - {

为避免这种情况,只需在if块的末尾添加以下代码:

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