2016-04-05 3 views
1

私は、plone.app.event.dx.behaviors.IEventBasicの動作を含む器用さのコンテンツタイプを持っています。たBrowserViewページでplone/jquery - フォームをポップアップオーバーレイとして開くと、JavaScriptが動作しない原因は何ですか?

、私は私のリソースでのJavaScriptファイルにjqueryのを使用して、リンクがクリックされたときに開くフォームを持っているフォルダ:

jquery(function($){ 

    .... 
    $(".openCT").prepOverlay(
     { 
      subtype: 'ajax', 
      filter: '#content>*', 
      formselector: '#content-core > form', 
      noform: 'reload', 
      closeselector: '[name="form.buttons.cancel"]', 
     } 
    ); 
    ....  
}); 

フォームが開きますが、jqueryの/ javascriptの関連何でもありませんうまくいかない。 whole_dayがTrueに設定されている場合、時間と分を示す「時間コンポーネント」は非表示にならないため、特にwhole_dayは機能しません。 jquery/javascriptがポップアップオーバーレイで機能するようにする必要がありますか?

編集: 私のフォームはdexterity.AddFormです:これを見て

class Add(dexterity.AddForm): 
    grok.name('my.product.tevent') 

    def updateWidgets(self): 
     super(Add,self).updateWidgets() 
     if 'a_param' in self.request.form.keys(): 

      #set default value of start date, which is a tuple built from data obtained from a_param 
      self.widgets['IEventBasic.start'].value = (a_year,a_month,a_day,an_hour,a_min,a_timezone) 
      #start-> hour,min are 0,0/end -> hour, min are 23,59 
+1

ブラウザでJavascriptコンソールを起動し、エラーメッセージを探します。いくつかのJSエラーがあなたのコードに到達する前に負荷を中断したということは間違いありません。 – SteveM

+0

残念ながら、コンソールにエラーメッセージが表示されることはありません。私はFireFox、Chromium、Webでこれを試しました。 –

答えて

4

は誰でも、この答えはのPlone 4.3.x.のためであることに注意してくださいポップアップは、Plone 5以降では別の方法で処理されます。

リンクまたはボタンをクリックすると、AjaxオーバーレイがDOMに挿入されます。したがって、jQueryイベントにDOMが変更されるたびにイベントを再接続する「ライブ」メカニズムが追加されていない限り、新しい要素にはjQueryイベントが関連付けられていません。

したがって、イベントを新しいDOM要素に添付するには、JS初期化コードを再実行する必要があります。オーバレイ設定にonLoadイベントを追加すると、これを行うことができます。

$(".openCT").prepOverlay({ 
    subtype: 'ajax', 
    ... 
    config: { 
     onLoad: function() { 
      // js code to attach events to new DOM elements 
    }} 
... 
}); 

このイベントは、オーバーレイがロードされて表示された後に起動します。したがって、新しい要素はDOMで利用できます。 「設定」に入るアイテムは、jQueryTools docsに記載されています。

+0

私の遅い応答に申し訳ありません。ありがとうございました。これは私自身の機能に関する問題を解決します。私はIEventBasicが持っているjqueryを添付する方法を見つけなければなりませんが、正しい方向へのステップに感謝します。 –

+0

私はこれに似た別の問題がありますが、新しい質問をするのが適切かどうかはわかりません。私は自分のファイル(validator.SimpleFieldValidator)にバリデーターを定義しており、ユーザーが無効なサブミットボタンをクリックしたときに分フィールドの値を0-59から0と30に変更するなど、onLoadにjQueryを配置しています入力。休憩では、分フィールドが0-59に戻ることを意味します。バリデーターはまだ動作します。奇妙なことに、送信ボタンをクリックするのとは対照的にフィールドをクリックしても、jqueryが想定どおりに妥当性を確認しても壊れません。 –

関連する問題