如何编辑此文件上传按钮?

时间:2015-01-12 06:00:19

标签: wordpress file-upload woocommerce input-type-file

我正在使用Wordpress主题,它实际上是Wordpress上的WooCommerce主题......无论如何,我想要隐藏"没有选择文件"文件上传按钮旁边的文本。我知道通常可以使用以下代码完成:

input[type=file].hidden {
  color: transparent;
}

但是,我从未见过像我这样的输入,所以我不确定如何修改上面的代码来完成这项工作。这是文件上传输入的代码:

<input type='hidden' name='MAX_FILE_SIZE' value='8388608' />
<input name='input_14' id='input_2_14' type='file' class='medium' tabindex='4' />

2 个答案:

答案 0 :(得分:0)

是您可以使用CSS&amp; amp;来自定义文件上传的UI。 JQuery,像这样::: Custome File Upload by Sujeet Kumar

<强> HTML

<h1>Custom File Upload <span>With jQuery and CSS</span></h1>

<div class="custom-file-upload">
    <!--<label for="file">File: </label>--> 
    <input type="file" id="file" name="myfiles[]" multiple />
</div>

<强> CSS     @import url(&#34; http://fonts.googleapis.com/css?family=Lato&#34;);

$background: #e74c3c;
$file-upload-color: #c0392b;
$file-upload-size: 300px;

* {
    margin: 0;
    padding: 0;
    @include box-sizing(border-box);
}
body { 
    font-family: Lato, Arial; 
    color: #fff;
    padding: 55px 25px;
    background-color: $background;
}
h1 {
    font-weight: normal;
    font-size: 40px;
    font-weight: normal;
    text-transform: uppercase;
    span { 
        font-size: 13px;
        display: block;
        padding-left: 4px;
    }
}
p {
  margin-top: 200px;
  a {
    text-transform: uppercase;
    text-decoration: none;
    display: inline-block;
    color: #fff;
    padding: 5px 10px;
    margin: 0 5px;
    background-color: darken($file-upload-color, 2);
    @include transition(all 0.2s ease-in);
    &:hover {
      background-color: darken($file-upload-color, 5);
    }
  }
}
.custom-file-upload-hidden {
    display: none;
    visibility: hidden;
    position: absolute;
    left: -9999px;
}
.custom-file-upload {
    display: block;
    width: auto;
    font-size: 16px;
    margin-top: 30px;
    //border: 1px solid #ccc;
    label {
        display: block;
        margin-bottom: 5px;
    }
}

.file-upload-wrapper {
    position: relative; 
    margin-bottom: 5px;
    //border: 1px solid #ccc;
}
.file-upload-input {
    width: $file-upload-size;
    color: #fff;
    font-size: 16px;
    padding: 11px 17px; 
    border: none;
    background-color: $file-upload-color; 
    @include transition(all 0.2s ease-in); 
    float: left; /* IE 9 Fix */
    &:hover, &:focus { 
        background-color: darken($file-upload-color, 5);
        outline: none; 
    }
}
.file-upload-button {
    cursor: pointer; 
    display: inline-block; 
    color: #fff;
    font-size: 16px;
    text-transform: uppercase;
    padding: 11px 20px; 
    border: none;
    margin-left: -1px;  
    background-color: darken($file-upload-color, 10); 
    float: left; /* IE 9 Fix */
    @include transition(all 0.2s ease-in);
    &:hover {
        background-color: darken($file-upload-color, 20);
    }
}

JS

//Reference: 
    //http://www.creativesinfotech.com/
    ;(function($) {

          // Browser supports HTML5 multiple file?
          var multipleSupport = typeof $('<input/>')[0].multiple !== 'undefined',
              isIE = /msie/i.test( navigator.userAgent );

          $.fn.customFile = function() {

            return this.each(function() {

              var $file = $(this).addClass('custom-file-upload-hidden'), // the original file input
                  $wrap = $('<div class="file-upload-wrapper">'),
                  $input = $('<input type="text" class="file-upload-input" />'),
                  // Button that will be used in non-IE browsers
                  $button = $('<button type="button" class="file-upload-button">Select a File</button>'),
                  // Hack for IE
                  $label = $('<label class="file-upload-button" for="'+ $file[0].id +'">Select a File</label>');

              // Hide by shifting to the left so we
              // can still trigger events
              $file.css({
                position: 'absolute',
                left: '-9999px'
              });

              $wrap.insertAfter( $file )
                .append( $file, $input, ( isIE ? $label : $button ) );

              // Prevent focus
              $file.attr('tabIndex', -1);
              $button.attr('tabIndex', -1);

              $button.click(function () {
                $file.focus().click(); // Open dialog
              });

              $file.change(function() {

                var files = [], fileArr, filename;

                // If multiple is supported then extract
                // all filenames from the file array
                if ( multipleSupport ) {
                  fileArr = $file[0].files;
                  for ( var i = 0, len = fileArr.length; i < len; i++ ) {
                    files.push( fileArr[i].name );
                  }
                  filename = files.join(', ');

                // If not supported then just take the value
                // and remove the path to just show the filename
                } else {
                  filename = $file.val().split('\\').pop();
                }

                $input.val( filename ) // Set the value
                  .attr('title', filename) // Show filename in title tootlip
                  .focus(); // Regain focus

              });

              $input.on({
                blur: function() { $file.trigger('blur'); },
                keydown: function( e ) {
                  if ( e.which === 13 ) { // Enter
                    if ( !isIE ) { $file.trigger('click'); }
                  } else if ( e.which === 8 || e.which === 46 ) { // Backspace & Del
                    // On some browsers the value is read-only
                    // with this trick we remove the old input and add
                    // a clean clone with all the original events attached
                    $file.replaceWith( $file = $file.clone( true ) );
                    $file.trigger('change');
                    $input.val('');
                  } else if ( e.which === 9 ){ // TAB
                    return;
                  } else { // All other keys
                    return false;
                  }
                }
              });

            });

          };

          // Old browser fallback
          if ( !multipleSupport ) {
            $( document ).on('change', 'input.customfile', function() {

              var $this = $(this),
                  // Create a unique ID so we
                  // can attach the label to the input
                  uniqId = 'customfile_'+ (new Date()).getTime(),
                  $wrap = $this.parent(),

                  // Filter empty input
                  $inputs = $wrap.siblings().find('.file-upload-input')
                    .filter(function(){ return !this.value }),

                  $file = $('<input type="file" id="'+ uniqId +'" name="'+ $this.attr('name') +'"/>');

              // 1ms timeout so it runs after all other events
              // that modify the value have triggered
              setTimeout(function() {
                // Add a new input
                if ( $this.val() ) {
                  // Check for empty fields to prevent
                  // creating new inputs when changing files
                  if ( !$inputs.length ) {
                    $wrap.after( $file );
                    $file.customFile();
                  }
                // Remove and reorganize inputs
                } else {
                  $inputs.parent().remove();
                  // Move the input so it's always last on the list
                  $wrap.appendTo( $wrap.parent() );
                  $wrap.find('input').focus();
                }
              }, 1);

            });
          }

}(jQuery));

$('input[type=file]').customFile();

答案 1 :(得分:0)

没关系,我明白了。只需将课程从隐藏更改为中等

input[type=file].medium {
  color: transparent;
}