- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有:
var directions = [ "name", "start_address", "end_address", "order_date" ];
我正在尝试找到一种巧妙、快速的方法来将该数组转换为:
data: { "directions[name]" : directions_name.val(), "directions[start_address]" : directions_start_address.val(), "directions[end_address]" : directions_end_address.val(), "directions[order_date]" : directions_order_date.val()}
注意模式。数组“directions”的名称是值的前缀。我很感兴趣人们如何做到这一点,或者至少建议一种方法让我尝试。
如有任何提示,我们将不胜感激。
谢谢!
编辑 **
感谢到目前为止的建议。但是,我忘了提到数组“directions”需要是动态的。
例如,我可以使用:
places = ["name", "location"]
应该返回
data: { "places[name]" : places_name.val(), "places[location]" : places_location.val()}
alpha = ["blue", "orange"]
应该返回
data: { "alpha[blue]" : alpha_blue.val(), "alpha[orange]" : alpha_orange.val()}
所以基本上我可以将一个数组传递给一个函数,然后它返回该数据对象。
var directions = ["name", "start_address", .... ]; var data = someCoolFunction( directions );
希望这是有道理的。
** 编辑 ************* *
我要感谢大家的帮助。我最终走了一条不同的路。考虑之后,我决定在 HTML 表单本身中放置一些元信息。而且,我坚持命名约定。这样 HTML 表单就有了它需要的信息(没有膨胀)告诉 jQuery 在哪里发布信息。这就是我最终做的(对于那些感兴趣的人):
// addBox // generic new object box. function addBox(name, options) { var self = this; var title = "Add " + name.charAt(0).toUpperCase() + name.slice(1); var url = name.match(/s$/) ? name.toLowerCase() : name.toLowerCase() + "s"; allFields.val(""); tips.text(""); $("#dialog-form-" + name).dialog( $.extend(default_dialog_options, { title: title, buttons: [ { // Add Button text: title, click: function(){ var bValid = true; allFields.removeClass( "ui-state-error" ); var data = {}; $("#dialog-form-" + name + " input[type=text]").each(function() { // each is fine for small loops :-) var stripped_name = this["name"].replace(name + "_", ""); data[name + "[" + stripped_name + "]"] = $("#dialog-form-" + name + " #" + name + "_" + stripped_name).val(); }); // verify required fields are set $("#dialog-form-" + name + " input[type=text].required").each(function() { bValid = bValid && checkLength( $(this), $(this).attr("name").replace("_", " "), 3, 64 ); }); // find sliders $("#dialog-form-" + name + " .slider").each( function() { data[name + "[" + $(this).attr("data-name") + "]"] = $(this).slider( "option", "value" ); }); data["trip_id"] = trip_id; if(options != null) { $.extend(data, options); } // add optional key/values if(bValid) { $(".ui-button").attr("disabled", true); $.ajax( { url : "/" + url, type : "POST", data : data } ); } } }, { text: "Cancel", click: function(){$( this ).dialog( "close" );} } ] })); }
最佳答案
这里真的不清楚你想要什么。也许您应该提供所需函数的接口(interface),以及设置一些示例变量和调用函数的一些代码示例。
您似乎要求的是动态查找您已经在环境中声明的变量,例如 directions_name
和 directions_start_address
,并调用 val()他们每个人的方法,然后构造一个字典映射字符串到这些结果。但是字典的键包含 JavaScript 语法。你确定那是你想要的吗?
function transform(name)
{
var data = {};
var names = window[name];
for (var i=0; i<names.length; i++)
{
data[name + "[" + names[i] + "]"] = window[name + "_" + names[i]].val();
}
return data;
}
编辑:要使用 JQuery 按 ID 查找对象而不是上述方法(按名称查找全局变量):
function transform(name)
{
var data = {};
var names = $("#" + name);
for (var i=0; i<names.length; i++)
{
data[name + "[" + names[i] + "]"] = $("#" + name + "_" + names[i]).val();
}
return data;
}
这将在窗口的全局空间中查找名称(无论如何都可以在浏览器中使用)。您以“directions”作为参数调用该函数。例如:
var directions = [ "name", "start_address", "end_address", "order_date" ];
var directions_name = {"val": function() {return "Joe";}};
var directions_start_address = {"val": function() {return "14 X Street";}};
var directions_end_address = {"val": function() {return "12 Y Street";}};
var directions_order_date = {"val": function() {return "1/2/3";}};
data = transform("directions");
这是你想要的吗?
(注意:我看到其他人发布了一个使用 $
和 "#"
的解决方案......我认为这是 JQuery 语法,对吧?这在没有 JQuery 的情况下有效。)
编辑:请注意,这允许您使用“方向”的动态值。但我仍然不确定为什么您希望这些键是 "directions[name]"
、"directions[start_address]"
,而不是 "name"
、"start_address"
等。更容易查找。
编辑:我修复了示例代码以在值中使用函数。这真的是你想要的吗?如果您不使用括号调用 val()
会更容易。
关于JavaScript 挑战。我如何使用数组实现这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4320914/
我想得到 id a b c -------------------- 1 1 100 90 6 2 50 100 ...来自: id a
让我们看看,我有这段将 NFA 自动转换为 DFA 的代码;这是我编写的;我发现了一个“bug”; printf()指令 这意味着像这样“printf("",X); ”以防止出现错误 没有要在屏幕上打
我有一些文本图像,但它们是弯曲的,呈圆形或波浪形。我需要把它们弄直。我尝试使用OCR提取文本,但是它们效率低下,需要直接的图像。 我附上测试图片: 我需要覆盖这两个最小区域。 请建议一些路径或使用
data1=data.frame("StudentID"=c(1,1,1,2,2,2,2,3,3,3,3), "Class"=c(1,1,1,1,1,1,1,2,2,2,2),
我的问题已在 java draw line as the mouse is moved 中提到过然而,我对这本书的了解还不够深入,无法涵盖 JPanels、JFrames 和 Points,正如提出这
这是我上一个问题 here. 的后续问题那里发布的答案实际上不起作用。所以这就是挑战。您将获得以下代码(假设包含 jQuery): $("input").val(**YOUR PHP /
以下是C语言中链表的语法,部分内容 struct tag-name { type member1; type member2; ....... ....... struc
我面临以下挑战性问题: There are a circle of 100 baskets in a room; the baskets are numbered in sequence from 1
我有一个这样的结构: public struct MyStruct { public string Name; public bool Process; } 我有一个这样的
假设我有: var directions = [ "name", "start_address", "end_address", "order_date" ]; 我正在尝试找到一种巧妙、快速的方法来将
我正在用 Javascript 重做 Project Euler 挑战。任务是获取最大的回文数( https://projecteuler.net/problem=4 )。现在我得到以下代码: var
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
第一问:有没有可能有一个不可见的矩形? 问题 2:是否可以在方法上调用方法?见下文。 var canvas = document.getElementById("canvas"); var ctx =
问题: 给定一串数字,计算是任何回文的字谜的子词(一致的子序列)的数量。 例子: 对于输入字符串“02002”,结果应该是 11,即: “0”、“2”、“0”、“0”、“2”、“00”、“020”、“
用户A-用户B-用户C-用户D-用户F 用'-'连接的用户互相认识。 我需要一个算法来完成这两项任务: 计算从UserX到UserY的路径 对于 UserX,计算距离不超过 3 步的所有用户。 有没有
根据我的教授介绍。对于数据库理论,没有任何例子可以说明这种情况何时会出现,考虑到它是理论的特定部分,这似乎有点奇怪。 我正在寻找的只是一个示例关系,它是第 4 范式并且可以执行第 5 范式分解。或者(
给定任务sameEnds来自 CodingBat: 给定一个字符串,返回出现在字符串开头和结尾且不重叠的最长子字符串。例如,sameEnds("abXab") 是 "ab"。 sameEnds("ab
在我的 welcome#index 页面上,有一个按钮可以远程(或者我应该说异步)为 Article 编写新的 Comment ),使用 AJAX。 它工作得很好,只是当使用rails迭代一篇文章时,
希望每个人都有美好的一天。 这是我在 Stackoverflow 上发表的第一篇文章! 我刚刚完成了 Codeacademy 上的 javascript 类(class),并且也阅读了几本相关书籍。现
挑战是删除数字末尾的零。两个数字内的零是可以的。例如: 14000 == 14 //all end zeros removed 10300 == 103 // all end zeros remove
我是一名优秀的程序员,十分优秀!