0

Zend Framework と Dojo Toolkit を使用していくつかのことをしようとしています。問題は次のとおりです。

ajax ラジオ ボタンを選択できる Zend Framework フォーム クラスでレンダリングされるフォームがあります。これらのラジオ ボタンのいずれかをクリックすると、別のコントローラーに ajax リクエストが送信されます。このコントローラーには、レイアウトがなく、レンダリングされたフォームのみが送信されます。ajax リクエストは、div に新しいフォーム オプションを設定します。

問題は、div の innerHTML を ajax 応答に置き換えると、すべてのフォーム入力と要素が同じ Dojo スタイルとフォーム検証を継承しないことです。

ajax 呼び出しの後にフォーム要素を再開する方法があるかどうか疑問に思っていましたか?

添付のコードを見つけてこの例用に少し変更して使用しようとしましたが、うまくいきませんでした。この行を使用してdojo.parser.parse( div );も何も変わりません (例の rg_address は、DOM に配置されたフォーム要素の ID です)。rg_address の console.log は次のとおりです。

 <input type="text" dojotype="dijit.form.ValidationTextBox" 
   required="1" invalidmessage="The first name of the recipient"
   value="" name="rg_address" id="rg_address" class="textbox"/>

  onClick='

  dojo.xhrGet( {
    url: "/transfer/newrecipient/",
    handleAs: "text",
    timeout: 10000, // Time in milliseconds

    // The LOAD function will be called on a successful response.
    load: function(response, ioArgs) {
  $("#newRecipient").html(response);
      $("#newPayMethod").html("");
  $("#newPayDetail").html("");

  var div = dojo.byId("rg_address");
  console.log( div );
  dojo.parser.parse( div );

  return response;
    },

    // The ERROR function will be called in an error case.
    error: function(response, ioArgs) {
  $("#newRecipient").html("Error loading registration form");
  $("#newPayMethod").html("");
  $("#newPayDetail").html("");
  return response;
    }

  });'

ありがとう、デュラル

4

2 に答える 2

3

同じ質問があり、可能な答えを見つけました:

http://o.dojotoolkit.org/forum/dijit-dijit-0-9/dijit-support/dijit-parse-after-ajax-call-again

私が理解していることから、ajax呼び出しから受信したデータを処理するために呼び出される関数で、次のようなことを行う必要があります。

function updateform(data)
{
    var targetNode = dojo.byId(\"step2\");
    targetNode.innerHTML = data;
    dojo.parser.parse(targetNode);
}

これは以下で動作します:

Zend_Dojo_View_Helper_Dojo::setUseDeclarative();

しかし、私はプログラマティックを使いたいです。それについて質問を投稿します。

于 2010-07-07T21:53:54.750 に答える