scriptaculous ajaxのオートコンプリートを空に対応
-
19-08-2019 - |
質問
私は、ajax-autocompleterる。私の目標はリダイレクトと編集機能のための既存の項目、または作成機能しない-見つかります。
を挿入し、特定のidをliとができまそのために使ってみては如何でしょうかを編集機能afterUpdateElementオプションです。
がない場合には結果が見つかったリストが空の場合には、やまだひさしをはじめとするべく、afterUpdateElementスクリプトな結果を得た。実際、afterUpdateElement"と呼ばれるものがありません。でafterUpdateElement無駄な...
を考えてい試験のノウハウを活用したアドバイスを送り、ajaxます。のですがなかなか見つかむことは---
解決
そこで、最後に見つかりチェックする場合の結果を選択してください、大きな助Gwyohm):
- 初の全てを設置し、隠す場合は、結果選ばれた(true/false)です。デフォルトではFALSEに設定されています。
- のafterUpdateElementは使用後に選択。で使用していますaferUpdateElementを隠します。
ユーザの場合、変更、検索フィールド値となり、ブランドの新しい値は選択されていない、afterUpdateElementを用い、隠れた値はTRUEです。を解決する問題を聞くキーを押していただきます。場合キーを押すと、隠れた磁力のバランスを考えてFALSEです。この作品はすべての鍵であっても、Enterキーを実際に入力したら、改行してください。ここでは例外しはできるだけ除去することが望から打鍵スです。なので、最後に見てみましょう当社の追加機能:
$(idのテキストである。観察("keyup",function(e){
if(window.イベントキーコード=ウインドウです。イベントです。キーコード;
else if(e)キーコード=e.る;
た場合(キーコード!=13){$(idのが用意されているためである。value="FALSE";
}
}.bindAsEventListener($(idのテキスト分野)));
その上で、いまの使用を隠しい場合はテキストの値を編集または作成された...
注意:本ソリューションの場合、ユーザー種別の値にマッチング、既存の価値を選ぶことなく、まされることが確認され新たな価値に繋がると期待される複製エントリを追加した場合、この値をデータベースです。(このクも、すべての名称、二つの異なる人々が同じ名前...)
他のヒント
次のようにupdateChoicesメソッドを上書きできます:
Ajax.Autocompleter.prototype.updateChoices = function (choices) {
if(!this.changed && this.hasFocus) {
if(!choices) {
//do your "new item" thing here
}
else {
this.update.innerHTML = choices;
Element.cleanWhitespace(this.update);
Element.cleanWhitespace(this.update.down());
if(this.update.firstChild && this.update.down().childNodes) {
this.entryCount =
this.update.down().childNodes.length;
for (var i = 0; i < this.entryCount; i++) {
var entry = this.getEntry(i);
entry.autocompleteIndex = i;
this.addObservers(entry);
}
} else {
this.entryCount = 0;
}
this.stopIndicator();
this.index = 0;
if(this.entryCount==1 && this.options.autoSelect) {
this.selectEntry();
this.hide();
} else {
this.render();
}
}
}
}
controls.jsで上書きするのは良い考えではありません。代わりに、これを新しい.jsに追加し、ライブラリの後に含めることができます。
編集:pff ..悪いインデントについては申し訳ありませんが、TextMateからのコピー/貼り付けであり、タブがスペースと組み合わされています。あなたがポイントを得ることを願っています。私が追加した唯一のものは
でした if(!choices) {
//do your "new item" thing here
}
else {}
ブロック。また、コードをテストしませんでしたが、動作するはずです。