Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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
Javascript 用数据中的值填充隐藏输入_Javascript_Jquery - Fatal编程技术网

Javascript 用数据中的值填充隐藏输入

Javascript 用数据中的值填充隐藏输入,javascript,jquery,Javascript,Jquery,我这里有一段代码。我对Javascript相当陌生,我一生都搞不懂这一点。因此,代码的底部会拉入数据并将其放入表中。我要做的是,当我单击最后一列中的按钮时,它将获取item.ReviewId并自动填充模式中的隐藏输入,以匹配此人正在审阅的项目。任何帮助都将不胜感激。当我单击它时,它会自动填充列表上的最后一个数字。例如,如果有3个项目,20、21、22,我单击第一个项目,它将填充22 var success = function (result) { $.ea

我这里有一段代码。我对Javascript相当陌生,我一生都搞不懂这一点。因此,代码的底部会拉入数据并将其放入表中。我要做的是,当我单击最后一列中的按钮时,它将获取item.ReviewId并自动填充模式中的隐藏输入,以匹配此人正在审阅的项目。任何帮助都将不胜感激。当我单击它时,它会自动填充列表上的最后一个数字。例如,如果有3个项目,20、21、22,我单击第一个项目,它将填充22

var success = function (result) {          

        $.each(result.Items, function (index, item) {            

            $('#reviewresults').dataTable().fnAddData([razorHelpers.formatDate(item.DateVisited), item.clientProfile.CompanyName, razorHelpers.formatCurrency(item.AmountSpent), item.ReviewId, '<button class="btn btn-blue" data-toggle="modal" data-target="#myModal" title="View" id="review">Review This Transaction <i class="fa fa-thumbs-up"></i></button>']);

            console.log(item.ReviewId)

            $("#review").on("click", function () {
                test(item.ReviewId)
            });

            function test(number) {
                $("#reviewinput").val(number);
            }

        });

    };     

    ClientOpenReviewService.ListReviewsByConsumer(razorStorage.ExtractSessionData('userId'), 0, 0).done(success);
var success=函数(结果){
$.each(result.Items,函数(索引,项){
$('#reviewresults').dataTable().fnAddData([razorHelpers.formatDate(item.DateVisited)、item.clientProfile.CompanyName、razorHelpers.formatCurrency(item.AmountUsed)、item.ReviewId、“查看此交易”);
console.log(item.ReviewId)
$(“#查看”)。在(“单击”上,函数(){
测试(项目评审)
});
功能测试(编号){
$(“#审阅输入”).val(数字);
}
});
};     
ClientOpenReviewService.ListReviewByConsumer(razorStorage.ExtractSessionData('userId'),0,0)。完成(成功);

在没有真正理解您的代码的情况下,我将尝试根据我所知重写它:

function test(number) {
  $("#reviewinput").val(number);
}

var success = function (result) {
  $.each(result.Items, function(index, item) {
    $('#reviewresults').dataTable().fnAddData(
      [razorHelpers.formatDate(item.DateVisited),
      item.clientProfile.CompanyName,
      razorHelpers.formatCurrency(item.AmountSpent),
      item.ReviewId,
      '<button data-review="'+item.ReviewId+'" class="btn btn-blue review" data-toggle="modal" data-target="#myModal" title="View" id="review-'+item.ReviewId+'">Review This Transaction <i class="fa fa-thumbs-up"></i></button>'
      ]
    );

    console.log(item.ReviewId)
  });
};

$(document).ready(function() {
  ClientOpenReviewService.ListReviewsByConsumer(razorStorage.ExtractSessionData('userId'), 0, 0).done(success);

  $(".review").on("click", function() {
    test($(this).data('review'));
  });
});
功能测试(编号){
$(“#审阅输入”).val(数字);
}
变量成功=函数(结果){
$.each(result.Items,函数(索引,项){
$('#reviewresults').dataTable().fnAddData(
[razorHelpers.formatDate(item.DateVisited),
item.clientProfile.CompanyName,
razorHelpers.formatCurrency(项目金额),
项目1.ReviewId,
“查看此交易”
]
);
console.log(item.ReviewId)
});
};
$(文档).ready(函数(){
ClientOpenReviewService.ListReviewByConsumer(razorStorage.ExtractSessionData('userId'),0,0)。完成(成功);
$(“.review”)。在(“单击”,函数(){
测试($(this).data('review');
});
});

您正在遍历result.Items,并在每次迭代中创建一个单击侦听器

$(“#审阅”)。在(“单击”,函数(){})上

此侦听器将附加到#review(可能是按钮或div)。因此,您将得到一个#review元素,该元素附带了许多侦听器

它可能只显示LAST元素,因为在单击#review元素之后,所有侦听器都是按顺序执行的

为了说明这一点,我写了这篇文章

<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
</head>
<body>

<div id="review">
OK

</div>

<script>

    result = {};
    result.Items = [
        {
            ReviewId:1
        },
        {
            ReviewId:2
        },
        {
            ReviewId:3
        },
        {
            ReviewId:4
        }];


    $.each(result.Items, function (index, item) {

        $("div").on("click", function () {

            test(item.ReviewId)
        });

        function test(number) {

            alert(number)

            $("#reviewinput").val(number);
        }
    });

</script>

</body>
</html>

好啊
结果={};
结果.项目=[
{
综述:1
},
{
综述:2
},
{
综述:3
},
{
综述:4
}];
$.each(result.Items,函数(索引,项){
$(“div”)。在(“单击”)上,函数(){
测试(项目评审)
});
功能测试(编号){
警报(编号)
$(“#审阅输入”).val(数字);
}
});
您可以看到单击事件如何创建4个警报框,最后一个警报框是数组中的最后一个数字


我想你想要的是为你的不同专栏提供一些元素#回顾#1#回顾#2等。我认为您需要重新考虑您的设计。

您可能希望在
$之外定义
测试
函数。每个
。您能展示它的一半吗?您总是得到最后一个的原因是因为您有一个
每个
语句。最后一项将始终设置隐藏输入的值。您是否有理由必须循环而不是只使用正确的
?此外,您还必须解决由于循环而使许多元素具有相同的
id
的问题。让我感到不舒服的一点是,.each中定义了“item.ReviewId”statement@JosephNylund啊我明白了,我将不得不编辑我的答案。但是首先,
success
是获取
项值的函数吗。只要我将它移到
之外的任何位置,每个
语句都会变为undefined@JosephNylund这是有道理的。你为什么要循环而不是使用正确的
项呢。因此,这些数字还没有确定,而且可能会永远持续下去。