disable submit button until file selected for upload

后端 未结 5 788
名媛妹妹
名媛妹妹 2020-12-08 10:30

I have a form for uploading images. I\'d like to disable the submit button, until user selects an image to upload. I\'d like to do it with jQuery. Currently I have a JavaScr

相关标签:
5条回答
  • 2020-12-08 11:10

    Try

       $('#my_uploader').change(function() {
          if($(this).val()) {
            $('#my_submit_button').attr('disabled', '');
          } else {
            $('#my_submit_button').attr('disabled', 'disabled');
          }
        });
    
    0 讨论(0)
  • 2020-12-08 11:25

    The following seems to work reliably in Chrome and Firefox (Ubuntu 10.10), I'm unable to check on other platforms at the moment:

    jQuery

    $(document).ready(
        function(){
            $('input:file').change(
                function(){
                    if ($(this).val()) {
                        $('input:submit').attr('disabled',false);
                        // or, as has been pointed out elsewhere:
                        // $('input:submit').removeAttr('disabled'); 
                    } 
                }
                );
        });
    

    html

    <form action="#" method="post">
        <input type="file" name="fileInput" id="fileInput" />
        <input type="submit" value="submit" disabled />
    </form>
    <div id="result"></div>
    

    Demo at JS Fiddle.

    0 讨论(0)
  • 2020-12-08 11:25

    Instead of disabling the submit, is it potentially more helpful to offer instruction if the user presses it without selecting a file first? So add something like this as the onclick code of the submit?

    var bFileEmpty = !document.getElementById('filControl').value; if (bFileEmpty) alert('Please select a file'); return !bFileEmpty;
    

    Note that your file control will need an ID as well as a name

    0 讨论(0)
  • 2020-12-08 11:26

    Slightly simpler way using prop() which I think is the preferred way to do it now:

    $('input:file').on("change", function() {
        $('input:submit').prop('disabled', !$(this).val()); 
    });
    

    Tested in IE, Chrome and FireFox.

    0 讨论(0)
  • 2020-12-08 11:29

    If you're a fan of ternary expressions:

    $(document).ready(function(){
        var $submit = $('#submit_document');
        var $file = $('#file_path');
    
        $file.change(
            function(){
                $submit.attr('disabled',($(this).val() ? false : true));
            }
        );
    });  
    
    0 讨论(0)
提交回复
热议问题