Вход Регистрация
Файл: Source/admin/assets/third/input/bootstrap.file-input.js
Строк: 186
<?php
/*
  Bootstrap - File Input
  ======================

  This is meant to convert all file input tags into a set of elements that displays consistently in all browsers.

  Converts all
  <input type="file">
  into Bootstrap buttons
  <a class="btn">Browse</a>

*/
$(function() {

$.fn.
bootstrapFileInput = function() {

  
this.each(function(i,elem){

    var 
$elem = $(elem);

    
// Maybe some fields don't need to be standardized.
    
if (typeof $elem.attr('data-bfi-disabled') != 'undefined') {
      return;
    }

    
// Set the word to be displayed on the button
    
var buttonWord 'Browse';

    if (
typeof $elem.attr('title') != 'undefined') {
      
buttonWord $elem.attr('title');
    }

    
// Start by getting the HTML of the input element.
    // Thanks for the tip http://stackoverflow.com/a/1299069
    
var input = $('<div>').append$elem.eq(0).clone() ).html();
    var 
className '';

    if (!!
$elem.attr('class')) {
      
className ' ' $elem.attr('class');
    }

    
// Now we're going to replace that input field with a Bootstrap button.
    // The input will actually still be there, it will just be float above and transparent (done with the CSS).
    
$elem.replaceWith('<a class="file-input-wrapper btn' className '">'+buttonWord+input+'</a>');
  })

  
// After we have found all of the file inputs let's apply a listener for tracking the mouse movement.
  // This is important because the in order to give the illusion that this is a button in FF we actually need to move the button from the file input under the cursor. Ugh.
  
.promise().done( function(){

    
// As the cursor moves over our new Bootstrap button we need to adjust the position of the invisible file input Browse button to be under the cursor.
    // This gives us the pointer cursor that FF denies us
    
$('.file-input-wrapper').mousemove(function(cursor) {

      var 
inputwrapper,
        
wrapperXwrapperY,
        
inputWidthinputHeight,
        
cursorXcursorY;

      
// This wrapper element (the button surround this file input)
      
wrapper = $(this);
      
// The invisible file input element
      
input wrapper.find("input");
      
// The left-most position of the wrapper
      
wrapperX wrapper.offset().left;
      
// The top-most position of the wrapper
      
wrapperY wrapper.offset().top;
      
// The with of the browsers input field
      
inputWidthinput.width();
      
// The height of the browsers input field
      
inputHeightinput.height();
      
//The position of the cursor in the wrapper
      
cursorX cursor.pageX;
      
cursorY cursor.pageY;

      
//The positions we are to move the invisible file input
      // The 20 at the end is an arbitrary number of pixels that we can shift the input such that cursor is not pointing at the end of the Browse button but somewhere nearer the middle
      
moveInputX cursorX wrapperX inputWidth 20;
      
// Slides the invisible input Browse button to be positioned middle under the cursor
      
moveInputY cursorYwrapperY - (inputHeight/2);

      
// Apply the positioning styles to actually move the invisible file input
      
input.css({
        
left:moveInputX,
        
top:moveInputY
      
});
    });

    $(
'.file-input-wrapper input[type=file]').change(function(){

      var 
fileName;
      
fileName = $(this).val();

      
// Remove any previous file names
      
$(this).parent().next('.file-input-name').remove();
      if (!!$(
this).prop('files') && $(this).prop('files').length 1) {
        
fileName = $(this)[0].files.length+' files';
        
//$(this).parent().after('<span class="file-input-name">'+$(this)[0].files.length+' files</span>');
      
}
      else {
        
// var fakepath = 'C:\fakepath\';
        // fileName = $(this).val().replace('C:\fakepath\','');
        
fileName fileName.substring(fileName.lastIndexOf('\')+1,fileName.length);
      }

      $(this).parent().after('
<span class="file-input-name">'+fileName+'</span>');
    });

  });

};

// Add the styles before the first stylesheet
// This ensures they can be easily overridden with developer styles
var cssHtml = '
<style>'+
  '
.file-input-wrapper overflowhiddenpositionrelativecursorpointerz-index1; }'+
  '
.file-input-wrapper input[type=file], .file-input-wrapper input[type=file]:focus, .file-input-wrapper input[type=file]:hover positionabsolutetop0left0cursorpointeropacity0filteralpha(opacity=0); z-index99outline0; }'+
  '
.file-input-name margin-left8px; }'+
  '
</style>';
$('
link[rel=stylesheet]').eq(0).before(cssHtml);

});
?>
Онлайн: 1
Реклама