2011-08-10 3 views
0

を取得するには、ドロップダウンの名前を編集する必要がFIDDLEMooToolsは - 値

は、第三のドロップダウン後に起動するように警告を取得しようとしているが、彼らはしませんを参照してください。 私はこの3つのドロップダウンをフォームに使用しています。最初のドロップダウンと2番目のドロップダウンは、適切な名前がドロップダウンに適用されていないため、適切に値を送信します。

私は最後のアラートがなぜ発火しないのか分かりません。そのため、どんな入力があっても大きな助けになるでしょう。

私はアラートに振りかざすので、ジャバスクリプトをどの程度経由しているか分かりますが、最後の2つのアラートは起動しません。

私は合計javascriptばかです。私が理解していると思うほど、私はできないように思えます。だから、助けに感謝します。あなたの目標は、最終的にイベントがレベル3で選択にまで発射を取得する場合

答えて

1

、そうのように簡素化:

(function() { 
    var level1 = document.getElements("div.style-sub-1"), level2 = document.getElements("div.style-sub-2"); 
    var beer = document.id("beerStyle"); 

    beer.addEvent("change", function() { 
     level1.setStyle("display", "none"); 
     level2.setStyle("display", "none"); 

     var val = this.get("value"); 
     if (!val.length) 
      return; 

     document.id(this.get("value")).setStyle("display", "block"); 
    }); 

    // delegate the other selects 
    $(document.body); 
    document.body.addEvents({ 
     "change:relay(div.style-sub-1 select)": function() { 
      // reset level 2 
      level2.setStyle("display", "none"); 
      var val = this.get("value"); 

      if (!val.length) 
       return; 

      var target = document.id(val); 
      if (target) 
       target.setStyle("display", "block");   
     }, 
     "change:relay(div.style-sub-2 select)": function() { 
      alert("You chose: " + this.get("value")); 
     } 
    }); 

})(); 

問題がある - レベル3は、ちょうど1つの選択肢を持っている場合はどのしませんあなたは本当にあなたが知っている最後の良いブレッドクラム、例えばハイブリッドの状態を保つ必要があります。委任された選択のタイプごとに単一のイベントハンドラを経由して

http://jsfiddle.net/dimitar/mxaB5/2/

。私はそれがあなたにいくつかのアイデアを与えることを願っています - あなたは最終的に必要なデータを格納するためにちょうど2つの機能で動作することができます。

あなたの問題の第2レベルのドロップダウンは、divの中にdomの表現を持たない値とselectの値を参照できます。

+0

私はたくさんのことを学びましたが、これはトリックでした! - あなたが知っている良い情報源はありますか?あなたは何をお勧めします?あなたが私の既存のコードから見たように、私はJSのダミーですが、それで慰めのレベルに到達するのが大好きです。 – Hanny

+1

井戸 - 私は、あなたのための第1の目標は、ステップに戻ってパターンにプログラミングを見ているべきだと言うでしょう。あなたはすでにdomを動かすことができるので、あなたの精神を少し変えて、あなたの仕事を抽象化したり、あなたのアプリ全体で、あるいは異なるアプリケーション間で再利用したり、再利用したりできる関数やメソッドやクラスをグループ化します。ここでmootoolsのタグをチェックしてください。いいリンクがありますので、Aaron Newtonの "mootools(IIRC)のパターンにプログラミングする"というGoogleの言葉を参考にしてください。 –

+0

1.2.5でこのコードを動作させる方法はありますか?私は1.2.5.1(より多くの機能)を使用することはできません。しかし、このコードは1.2.5ライブラリ(UGH !!!)では動作しません。 http://jsfiddle.net/mxaB5/7/ 私はドキュメントを見て、 'relay'は1.2.5のオプションではないようです - それを使わずにこれにアプローチするにはどうすればよいでしょうか? – Hanny