1

提案を含むリスト項目を含む順序付けられていないリストを作成する ASP.NET WebHandler を呼び出す Prototype/Scriptaculous ライブラリの Ajax.Autocompleter クラスを使用しています。

現在、「ストップ ワード」テーブルに提案を追加できるページに取り組んでいます。つまり、それらがテーブルに出現した場合、それらはもう提案されません。

LI 要素内にボタンを配置し、それをクリックすると、ページへの ajax リクエストが実行され、その単語がテーブルに追加されます。それはうまくいきます。しかし、私は提案を即座に更新して、表に追加されたばかりの単語なしで提案が表示されるようにしたいと考えています。好ましくは、選択された単語は、前にクリックされた単語の次または前の単語である。

どうすればいいですか?代わりに、ボタンをクリックした LI が選択された単語になり、候補が消えます。

リスト項目は次のようになります。

<li>{0}
 <img onclick=\"deleteWord('{0}');\" src=\"delete.gif\"/>
</li>

Where{0}は提案された単語を表します。JavaScript 関数deleteWord(w)は、単語を「ストップ ワード」テーブルに追加できる webhandler を呼び出します。

4

1 に答える 1

0

Scriptaculous Autocompleter は、「li」の onclick イベントを監視します。これが示すように、「li」内に画像を貼り付けると、「img」と「li」の両方がクリックイベントを取得します。そのため、ボタンがクリックされたときに Autocompleter は通常のことを行っています。

<ul>
  <li onclick="alert('li');">
    <img onclick="alert('image')" src="blah.gif"/>
  </li>
</ul>

私が試したいのは、「onclick」に、削除がクリックされたことを示すある種の状態変数を設定させることです。次に、Autocompleter で「updateElement」をオーバーライドして、状態が設定されている場合は何もしないようにします。別の方法は、Autocompleter 全体をサブクラス化し、「onClick」をオーバーライドすることです。これにより、画像がクリックされたときにリストが消えなくなります。

リストをリアルタイムで更新するには、画像の「onclick」で、DOM のリストから「li」も削除します。概念的には次のようにします。

img onclick="deleteWord('blah');setStateVariable();this.parentNode.parentNode.removeChild(this.parentNode);"
于 2008-09-14T02:25:57.957 に答える