Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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_Html - Fatal编程技术网

Javascript 如何使用多个复选框禁用/启用多个上载按钮

Javascript 如何使用多个复选框禁用/启用多个上载按钮,javascript,html,Javascript,Html,我是一个初学者,在编写代码时遇到了困难。我想通过单击复选框启用/禁用文件上载按钮。当我只有一个上传按钮和一个复选框时,代码工作正常,但当我有多个复选框时,代码工作不正常。有人能帮忙吗 html代码 <label> <input type="checkbox" id="confirm"> </label> <input type="file" class="style5" id="abstract" name="abstract" disabl

我是一个初学者,在编写代码时遇到了困难。我想通过单击复选框启用/禁用文件上载按钮。当我只有一个上传按钮和一个复选框时,代码工作正常,但当我有多个复选框时,代码工作不正常。有人能帮忙吗

html代码

<label>
    <input type="checkbox" id="confirm">
</label>

<input type="file" class="style5" id="abstract" name="abstract" disabled onchange="ValidateSingleInput(this);"/>
<br>        

<label>
    <input type="checkbox" id="confirmp">
</label>

<input type="file" class="style5" id="poster" name="poster" disabled onchange="ValidateSingleInput(this);"/>
    <span class="style5"><br>        

        <label>
            <input type="checkbox" id="confirmr">
        </label>

        <input type="file" class="style5" id="resume" name="resume" disabled onchange="ValidateSingleInput(this);" />

        <span class="style5">

每当您编写一个新的
window.onload=function(){…}您正在覆盖窗口加载时将要执行的上一个函数,这就是为什么只有最后一个复选框起作用

因此,要解决这个问题,请确保将代码放在相同的
onload

这应该起作用:

window.onload = function() {
    var checker = document.getElementById('confirm');
    var sbm = document.getElementById('abstract');

    checker.onchange = function () {
        if(this.checked) {
            sbm.disabled = false;
        } 
        else {
            sbm.disabled = true;
        }
    };

    var checkerp = document.getElementById('confirmp');
    var sbmp = document.getElementById('poster');

    checkerp.onchange = function () {
        if(this.checked) {
            sbmp.disabled = false;
        } 
        else {
            sbmp.disabled = true;
        }
    }; 

    var checkerr = document.getElementById('confirmr');
    var sbmr = document.getElementById('resume');

    checkerr.onchange = function () {
        if(this.checked) {
            sbmr.disabled = false;
        } 
        else {
            sbmr.disabled = true;
        }
    }; 
};

每当您编写一个新的
window.onload=function(){…}您正在覆盖窗口加载时将要执行的上一个函数,这就是为什么只有最后一个复选框起作用

因此,要解决这个问题,请确保将代码放在相同的
onload

这应该起作用:

window.onload = function() {
    var checker = document.getElementById('confirm');
    var sbm = document.getElementById('abstract');

    checker.onchange = function () {
        if(this.checked) {
            sbm.disabled = false;
        } 
        else {
            sbm.disabled = true;
        }
    };

    var checkerp = document.getElementById('confirmp');
    var sbmp = document.getElementById('poster');

    checkerp.onchange = function () {
        if(this.checked) {
            sbmp.disabled = false;
        } 
        else {
            sbmp.disabled = true;
        }
    }; 

    var checkerr = document.getElementById('confirmr');
    var sbmr = document.getElementById('resume');

    checkerr.onchange = function () {
        if(this.checked) {
            sbmr.disabled = false;
        } 
        else {
            sbmr.disabled = true;
        }
    }; 
};

您只需要一个
窗口。onload

试试这个:

   window.onload = function () {

      var checker = document.getElementById('confirm'),
      sbm = document.getElementById('abstract'),
      checker2 = document.getElementById('confirmp'),
      sbm2 = document.getElementById('poster'),
      checker3 = document.getElementById('confirmr'),
      sbm3 = document.getElementById('resume');

      checker.onchange = function () {
           enableDisable(checker, sbm);
      };

      checker2.onchange = function () {
           enableDisable(checker2, sbm2);
      };

      checker3.onchange = function () {
           enableDisable(checker3, sbm3);
      };

      function enableDisable(target, btn) {
           btn.disabled = target.checked ? false : true;
      };

};

更新了您只需要一个
窗口。onload

试试这个:

   window.onload = function () {

      var checker = document.getElementById('confirm'),
      sbm = document.getElementById('abstract'),
      checker2 = document.getElementById('confirmp'),
      sbm2 = document.getElementById('poster'),
      checker3 = document.getElementById('confirmr'),
      sbm3 = document.getElementById('resume');

      checker.onchange = function () {
           enableDisable(checker, sbm);
      };

      checker2.onchange = function () {
           enableDisable(checker2, sbm2);
      };

      checker3.onchange = function () {
           enableDisable(checker3, sbm3);
      };

      function enableDisable(target, btn) {
           btn.disabled = target.checked ? false : true;
      };

};

更新

您有许多window.onload,因此在脚本结束时只有最后一个窗口处于活动状态。一个window.onload就足够了,然后您可以一起运行所有函数。尝试此更新


我将变量重命名为不相互重写,并在一个window.onload事件中初始化所有函数。

您有许多window.onload,因此在脚本结束时只有最后一个激活。一个window.onload就足够了,然后您可以一起运行所有函数。尝试此更新


我重命名了变量以避免相互重写,并在一个window.onload事件中初始化了所有函数。

请在此处发布相关代码。请在此处发布相关代码。当然没有问题@Nargis,很高兴我能提供帮助。我对你的代码进行了一点重构,并更新了fiddleSure@Nargis,很高兴能帮上忙。我对您的代码进行了一些重构并更新了Fiddle抱歉,现在我有另一个问题:如果复选框未选中,我希望保留记录中的文件,但每次提交后,文件都会从数据库中删除。有人能帮忙吗?我的代码位于[JSFiddle]()83对不起,现在我有另一个问题:如果复选框未选中,我希望记录中的文件保持不变,但每次提交后,文件都会从数据库中删除。有人能帮忙吗?我的代码在[JSFiddle]()83