[英]How do I pass values from one function to another before I serialize and submit the form
我有以下两个功能:
$("#form_pdetail").on("click", "#register_button", function() {
var detail_add = $("#form_pdetail").serialize();
var request = $.ajax({
type: 'POST',
url: "{{ path('product_detail_create') }}",
data: detail_add,
success: function() {
request.abort();
loadCenterLayout("{{ path('product_detail_list') }}");
}
});
});
$("#tree").dynatree({
checkbox: true,
children: {% autoescape false %} {{ categories }} {% endautoescape %},
minExpandLevel: 1,
selectMode: 3,
onSelect: function(select, node) {
// Get a list of all selected nodes, and convert to a key array:
var selKeys = $.map(node.tree.getSelectedNodes(), function(node){
return node.data.key;
});
console.log(selKeys.join(", "));
},
onKeydown: function(node, event) {
if( event.which == 32 ) {
node.toggleSelect();
return false;
}
}
});
在序列化detail_add
并提交表单之前,我需要将选择的选项从第二个函数传递到第一个函数,怎么办?
您可以通过获取对树的引用来获取该节点,而不是在dynatree对象的onSelect事件中获取所选节点。
从dynaTree文档中:
var tree = $("#tree").dynatree("getTree");
之后,您应该可以执行以下操作:
var selKeys = $.map(tree.getSelectedNodes(), ..................
您可以在表单的注册按钮的单击功能中完成所有这些操作。
也许是这样的:
$("#form_pdetail").on("click", "#register_button", function() {
var detail_add = $("#form_pdetail").serialize();
var tree = $("#tree").dynatree("getTree");
var selKeys = $.map(tree.getSelectedNodes(), function(node) {
return node.data.key;
}
detail_add.selectedItems = selKeys.join(", ");
var request = $.ajax({
type: 'POST',
url: "{{ path('product_detail_create') }}",
data: detail_add,
success: function() {
request.abort();
loadCenterLayout("{{ path('product_detail_list') }}");
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.