2013-05-14 73 views
0

我在数据元素中填充了一些字段名称。我试图形成一个查询字符串的字段名称和它们的相应值在窗体中使用jQuery的Ajax。但是,下面的代码不适用于我。通过jQuery获取数据属性中传递的元素的值

$(".linkedfill").change(function(){ 
    var params = $(this).data("select-params").split(","); 
    $.each(params, function(index,value){ 
    pname = value.slice(value.IndexOf("["), value.IndexOf("]")); 
    pval = $(this).parents().find("[name='"+value+"']").val(); 
    addparams = addparams + "&" + pname + "=" + pval; 
    }); 
}); 

字段名称会像header['fldname']和现场可用的地方以相同的形式。数据选择参数将如data-select-params="header['fld1'],header['fld2']"

更新:我对田HTML应该是这样的:

<input name='header[fld1]' /> 
<input name='header[fld2]' /> 
<select class='linkedfill' name='pselect' data-select-params="header[fld1],header[fld2]"> 
    <option value="opt1">Option 1</option> 
    <option value="opt2">Option 2</option> 
</select> 

什么我试图用jQuery做的就是的header[fld1] & header[fld2]的价值观,形成一个查询字符串出来的数据。

任何人都可以帮我解决这个问题吗?提前致谢。

回答

0

试试这个:

var data="header['fld1'],header['fld2']"; 
var params = data.split(","); 
var addparams=''; 
$.each(params, function(index,value){ 
    console.log(value.indexOf("['")+','+value.indexOf("']")+','+value); 
    pname = value.substring(value.indexOf("['")+2, value.indexOf("']")); 
    pval = $('form').find("header["+pname+"]").val(); 
    addparams = addparams + "&" + pname + "=" + pval; 
    console.log(addparams); 
}); 

小提琴:http://jsfiddle.net/Ju297/1/

我不知道你想要什么,但你可以把它简单的像,

var data="fld1,fld2"; 
var params = data.split(","); 
var addparams=''; 
$.each(params, function(index,value){ 
    pval = $('form').find("header["+value+"]").val(); 
    addparams = addparams + "&" + value + "=" + pval; 
    console.log(addparams); 
}); 
+0

谢谢。我可以解决我的问题的第一部分。 pname使用'pname = value.slice(value.indexOf(“[”)+ 1,value.indexOf(“]”));'但是,pval不会获取任何值(未定义)。更新我的问题与进一步的细节。我认为问题是''(this)'部分作为从基础对象('.linkedfill')到'params'的上下文变化?我试过'$('form')。find..',但这也不起作用。 – Ravi 2013-05-14 09:33:32

+0

@Ravi测试上面我做了改动。 – 2013-05-14 09:43:43

+0

嗨。谢谢。我无法硬编码'标题',因为它可以是任何东西。我发现问题与我怀疑的对象上下文有关。我添加了'var oelem = $(this); // linkedfill'在顶部,编辑的pval行为'pval = oelem.parents()。find(“[name ='”+ value +“'”“)。val();'which worked。 – Ravi 2013-05-14 10:08:02

1

你为什么不使一组参数,如:

//if you need you can iterate the header[h1]..header[hn] push inside the function below 
$('.linkedfill').data('select-params', ["header[h1]","header[h2]",...,"header[hn]"]); 

,然后用

$.each($('.linkedfill').data() , function() { 
console.log($('.linkedfill').data()); 
// ..do your stuff.. 
}) 

这里访问它是一个小提琴http://jsfiddle.net/DgbRn/

+1

想想我细说不清楚。用更多细节更新了问题。感谢您的努力。 – Ravi 2013-05-14 09:31:04

相关问题