如何让 Drupal 将 AHAH 行为添加到通过 AHAH 返回的表单元素?
所以这就是我想做的:
1。我创建并呈现以下表单元素:
$form['rb_download_' . $doc_id] = array(
'#type' => 'submit',
'#name' => 'doc_' . $doc_id,
'#prefix' => "<div id='rb_doc_order_{$doc_id}'>",
'#suffix' => '</div>',
'#value' =>variable_get('rb_order_button', "buyOnline"),
'#ahah' => array(
'event' => 'click',
'path' => "rb/case/doc_order_js/$case->nid/$doc_id",
'wrapper' => "rb_doc_order_{$doc_id}",
'effect' => 'fade',),
);
2。操作函数返回并用新元素替换上面的元素:
function rb_case_doc_order_js($case, $doc_id) {
$button['rb_download_' . $doc_id] = array(
'#type' => 'submit',
'#name' => 'doc_' . $doc_id,
'#prefix' => "<div id='rb_doc_order_{$doc_id}'>",
'#suffix' => '</div>',
'#value' => variable_get('rb_order_confirm', "Remove from cart"),
//'#attributes' => array('class' => 'ahah-processed'),
'#ahah' => array(
'event' => 'click',
'path' => "rb/case/doc_unorder_js/$case->nid/$doc_id",
'wrapper' => "rb_doc_order_{$doc_id}",
'effect' => 'fade',),
);
$output .= drupal_render($button);
$output .= "<script type='text/javascript'>\n";
$output .= "cart_block_item_count($count);\n";
$output .= "Drupal.ahah;\n";
$output .= "</script>\n";
print drupal_json($output);
}
3.结果是旧按钮被上面的按钮替换,但新按钮未启用 AJAX
。
我需要做什么才能使新返回的元素<代码>啊哈准备好了吗?
So here's what I'm trying to do:
1. I create and render the following form element:
$form['rb_download_' . $doc_id] = array(
'#type' => 'submit',
'#name' => 'doc_' . $doc_id,
'#prefix' => "<div id='rb_doc_order_{$doc_id}'>",
'#suffix' => '</div>',
'#value' =>variable_get('rb_order_button', "buyOnline"),
'#ahah' => array(
'event' => 'click',
'path' => "rb/case/doc_order_js/$case->nid/$doc_id",
'wrapper' => "rb_doc_order_{$doc_id}",
'effect' => 'fade',),
);
2. The action function returns and replaces the element above with a new element:
function rb_case_doc_order_js($case, $doc_id) {
$button['rb_download_' . $doc_id] = array(
'#type' => 'submit',
'#name' => 'doc_' . $doc_id,
'#prefix' => "<div id='rb_doc_order_{$doc_id}'>",
'#suffix' => '</div>',
'#value' => variable_get('rb_order_confirm', "Remove from cart"),
//'#attributes' => array('class' => 'ahah-processed'),
'#ahah' => array(
'event' => 'click',
'path' => "rb/case/doc_unorder_js/$case->nid/$doc_id",
'wrapper' => "rb_doc_order_{$doc_id}",
'effect' => 'fade',),
);
$output .= drupal_render($button);
$output .= "<script type='text/javascript'>\n";
$output .= "cart_block_item_count($count);\n";
$output .= "Drupal.ahah;\n";
$output .= "</script>\n";
print drupal_json($output);
}
3. The results are that the old button is replaced by the one above, but the new button is not AJAX
enabled.
What do I need to do to make the new returned element AHAH
ready?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我无法确切地弄清楚如何使该文件执行上述操作。但我确实找到了一个解决方法(在我的例子中,涉及在客户端提交元素对象的两个不同值之间切换,这样它的啊哈行为就不会丢失)。在服务器端,我只是检查不同的值并根据结果采取行动:
1。根据条件定义具有不同值的元素
2.操作函数检查表单的值并返回元素的切换值:
3。客户端的 JavaScript 函数更改元素的值,但对象保持其 AJAX 行为:
4.这对我有用:)
如果您能弄清楚的话,请随意添加上面的解决方案。
Well, I couldn't figure exactly how to make the file do the above. But I did figure a workaround (which in my case involves toggling between two different values of the submit element object on the client side so that it's AHAH behavior are not lost). On the server side I just check for the different values and act depending on the results:
1. Define the element with a different value dependent on a condition
2. The action function checks to see what value the form is and returns a toggle value for the element:
3. The JavaScript function on the client side changes the value of the element but the object keeps its AJAX behavior:
4. And that works for me :)
Feel free to add the solution above if you can figure that out.