Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过JQuery获取在数据属性中传递的元素的值_Jquery - Fatal编程技术网

通过JQuery获取在数据属性中传递的元素的值

通过JQuery获取在数据属性中传递的元素的值,jquery,Jquery,我在数据元素中填充了一些字段名。我试图在表单中用字段名及其对应的值形成一个查询字符串,以便在jQueryAjax中使用。但是,下面的代码不适用于我 $(".linkedfill").change(function(){ var params = $(this).data("select-params").split(","); $.each(params, function(index,value){ pname = value.slice(value.IndexOf("[")

我在数据元素中填充了一些字段名。我试图在表单中用字段名及其对应的值形成一个查询字符串,以便在jQueryAjax中使用。但是,下面的代码不适用于我

$(".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;
  });
});
字段名将类似于
标题['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>

选择1
选择2
我试图用jquery获取
header[fld1]
header[fld2]
的值,并从数据中形成一个查询字符串


有人能帮我修一下吗?提前谢谢。

为什么不制作一个参数数组,比如:

//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..
})
这是一把小提琴

试试这个:

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);
});
小提琴:

我不知道你想要什么但你可以简单的说

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);
});

我想我的细节不清楚。更新了问题的更多细节。谢谢你的努力,谢谢。我可以解决问题的第一部分。pname使用
pname=value.slice(value.indexOf(“[”)+1,value.indexOf(“])$(this)
部分,因为上下文从基本对象(
.linkedfill
)更改为
参数
?我尝试了
$('form')。查找..
,但也不起作用。@Ravi测试上面的内容我已经做了更改。您好。谢谢我不能硬编码“header”,因为它可以是任何东西。我发现问题与我所怀疑的对象上下文有关。我添加了
var oelem=$(this);//linkedfill
位于顶部,并将pval行编辑为
pval=oelem.parents()哪个有效。