Как установить значение ввода текста с помощью MooTools - PullRequest
1 голос
/ 03 июня 2011

Я только начал играть с 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 ]

2 голосов
/ 03 июня 2011

Вы уверены, что значение не устанавливается?

Что вы получаете, когда звоните: input.get('value')

Я проверял это (в Firefox), и хотя консольlogs <input type=​"text"> значение действительно установлено.Попробуйте добавить элемент на страницу, и вы увидите его :)

1 голос
/ 18 июля 2012

У меня была похожая проблема с этой «красной сельдью», которую я с тех пор решил и решил поделиться.Я пытаюсь сделать некоторые ячейки строки таблицы доступными для редактирования, когда пользователь нажимает на строку:

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' />

Однако это совершенно нормально, как указано выше.

Spotted«преднамеренная» ошибка?

Конечно, когда я нажал на поле ввода, он снова вызвал событие мыши в строке, что не позволило мне попасть на вход !!!!: - {

Чтобы избежать этого, просто добавьте эту строку кода в конце блока if:

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