Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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_Html_Ajax_Asp.net Mvc 3 - Fatal编程技术网

Javascript 为什么只有一个脚本值从表发回操作?

Javascript 为什么只有一个脚本值从表发回操作?,javascript,jquery,html,ajax,asp.net-mvc-3,Javascript,Jquery,Html,Ajax,Asp.net Mvc 3,我会根据需要发布更多的代码,如果可以避免的话,我只是不想设置一个巨大的块。 基本上,在我的MVC3应用程序中,我有一个以表格格式显示的列表。 该表为每行包含一个复选框,以指示用户选择的行。 我试图在这个表的每一行上实现一个文件上传功能。 只有选中复选框,此功能才可用 upload函数使用valums Ajax uploader 这是使用的javascript函数,我现在在视图中有它 <script type="text/javascript"> $(document).ready

我会根据需要发布更多的代码,如果可以避免的话,我只是不想设置一个巨大的块。 基本上,在我的MVC3应用程序中,我有一个以表格格式显示的列表。 该表为每行包含一个复选框,以指示用户选择的行。 我试图在这个表的每一行上实现一个文件上传功能。 只有选中复选框,此功能才可用

upload函数使用valums Ajax uploader 这是使用的javascript函数,我现在在视图中有它

  <script type="text/javascript">
$(document).ready(function () {

    function handleCheckbox() {
        if ($(this).find(':checkbox').is(':checked')) {
            //$(this).find('#file-uploader-attachment').html($('#myHTML').html());
            createUploader();
            $(this).find('#file-uploader-attachment').removeClass("upload-placeholder-unchecked");
            $(".qq-upload-button").css("margin-top", "-6px");
            $(".qq-upload-button").css("margin-bottom", "-20px");
        }
        else {
            $(this).find('#file-uploader-attachment').addClass("upload-placeholder-unchecked");
            $(this).find('#file-uploader-attachment').html($('#myHTML2').html());
        }
    }

    $('tr').each(function () {
        handleCheckbox.apply(this); // We need to call the function initially using 'label' for this.
    });
    $('tr').on('click', handleCheckbox);

    function createUploader() {
        var uploader = new qq.FileUploader({
            element: document.getElementById('file-uploader-attachment'),
            sizeLimit: 2147483647, // max size
            action: '/CalibrationViewer/AttachmentUpload',
            allowedExtensions: ['xls', 'xlsx', 'pdf', 'doc', 'docx', 'csv', 'txt', 'rtf', 'zip', 'zipx', '7z'],
            params: {
                customer: CUST_NAME,
                calibrationId: CAL_ID
            },
            multiple: false,
            debug: false,
            onComplete: function (id, fileName, responseJson) {
                var resultMessage = document.getElementById('resultMessage');
                alert(responseJson.msg);
                $('#resultMessage').addClass('greenText');
                resultMessage.innerHTML = responseJson.msg;

                $('#attachment').prepend('<hr/><p><a class="attachment-file" href="' + responseJson.fileId + '">' + responseJson.fileName + '</a>' +
                    '<a class="attachment-delete" href="' + responseJson.fileId + '">X</a></p>');

                $('#no-attachments').remove();
            }
        });
    }
});
json结果中的int-calibrationId参数始终是表中的最后一行id,无论是否选中

所以我确实有一些问题。 如果表中有多行,则未选择正确的行id。 上载btn仅显示在第一行,无论选中了哪行复选框。 并且不确定如何允许循环以确保每行都有一个上载btn,并且在上载时使用行Id


如果这是一个太宽泛的问题,我很抱歉,如果需要,我会添加更多的代码。

只是一个提示:
$('tr')。每个(handleCheckbox)
就可以了,不需要只做handleCheckbox.apply(这个)的匿名函数应用了该更改,谢谢。关于javascript/jquery.NP,仍在学习中。JS的语法类似于C/Java,因此可以让人联想到。但在内部,该语言的设计强烈倾向于函数式编程技术。您的问题可能是由于重复调用
$中的
createUploader
造成的。每个
循环。上次调用
createUploader
函数是在它处理最后一个tr时。我认为闭包可能会解决这个问题(虽然没有详细查看代码),你能扩展吗,你所说的代码“闭包”是什么意思?闭包。。。比如:
var模块=(function(){var-closureVar=123;return{getVal:function(){return-closureVar;}};}())。谷歌iLife,或者模块模式。这是一种将功能和数据封装、绑定在一起,并控制(或不)暴露于外部世界的方法
     <script type="text/javascript">
                 var CAL_ID = '@Model.ElementAt(index).Id';
                 var CUST_NAME = '@Model.ElementAt(index).CustomerName'; 
            </script>
  public JsonResult AttachmentUpload(string qqfile, string customer, int calibrationId, IPrincipal user)