javascript - 为什么在单个复选框检查后我的 javascript 函数在所有行上被调用?

标签 javascript jquery html asp.net-mvc-3 checkbox

在我的 MVC 3 应用程序中,每次选中具有特定空列单元格的行的复选框时,我想调用我的上传函数 (createUploader())。 但是,createUploader() 会应用于该单元格为空的每一行。

我 View 中的 HTML 复选框代码:

    <td><input type="checkbox" name="selectecals" value="@Model.ElementAt(index).Id"/></td>

每个表行中的单元格要么有一个值 (CertName),要么为空,并被分配一个用于在 javascript 中标识的类。

  @if (Model.ElementAt(index).CertName != null)
             {
                 <td>@Html.DisplayFor(m => Model.ElementAt(index).CertName)</td>
             }
             else
             {                    
                <td class="file-uploader-attachment-Class"></td>
             }

到目前为止我的 JavaScript:

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

    function handleCheckbox() {

            if ($(this).find(':checkbox').is(':checked')) {
                createUploader();
                $(this).find('.file-uploader-attachment-Class').removeClass("upload-placeholder-unchecked");
            }
            else {
                $(this).find('.file-uploader-attachment-Class').addClass("upload-placeholder-unchecked");
                $(this).find('.file-uploader-attachment-Class').html($('#myHTML2').html());
            }
    }

    $('tr').each(handleCheckbox);
    $('tr').on('click', handleCheckbox);

    function createUploader() {

        var elements = document.getElementsByClassName('file-uploader-attachment-Class');

        Array.prototype.filter.call(elements, function (element) {

            var uploader = new qq.FileUploader({
                element: element,
                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);
                }

            });

        });
    }
});

到目前为止,当页面加载时,如果证书单元格没有值,则会显示“无文件”。 如果用户每次选中该行的复选框时都显示“无文件”,则使用 createUploader() 函数。

理想情况下,我希望在选中该特定行的复选框时调用此函数(显示上传 btn),有意义吗?

before check After check

最佳答案

您需要指定在何处应用函数 createUploader()

function handleCheckbox() {

            if ($(this).find(':checkbox').is(':checked')) {
                createUploader($(this));
                $(this).find('.file-uploader-attachment-Class').removeClass("upload-placeholder-unchecked");
            }
            else {
                $(this).find('.file-uploader-attachment-Class').addClass("upload-placeholder-unchecked");
                $(this).find('.file-uploader-attachment-Class').html($('#myHTML2').html());
            }
    }

 function createUploader(container) {

    var elements = container.find('.file-uploader-attachment-Class');

    Array.prototype.filter.call(elements, function (element) {

        var uploader = new qq.FileUploader({
            element: element,
            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);
            }

        });

    });
}

关于javascript - 为什么在单个复选框检查后我的 javascript 函数在所有行上被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27568146/

相关文章:

javascript - 使用特殊字符时无法获得 if ... else 语句来正确切换 ("⏶/⏷")

javascript - 如果单击子元素,则单击不会触发

javascript - .append() 一个元素,click() 没有注册

javascript - 如何在 javascript DOM 事件中定位正文

javascript - jQuery 的复选框异常

javascript - 当select有值时在select by text中选择值?

javascript - 检测另一个框架中存在的按钮的 onClick

html - 一个编辑 html/css 网站的程序?

javascript - 如何避免返回到用 HTML id 属性标记的上一个部分,而是转到上一个网站?

javascript - 如何同时调用两个api?