1
4

2 に答える 2

2

値が設定されていませんか?

電話すると何が得られますか:input.get('value')

これを(firefoxで)テストしましたが、コンソールがログ<input type=​"text">に記録するだけで、実際には値が設定されます。要素をページに追加してみてください。それが表示されます:)

于 2011-06-03T01:35:43.833 に答える
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();});
于 2012-07-18T07:40:00.293 に答える