How can I make the cursor to become a pointer on an input file or an input text when you hover it?
My try but it does not work of course,
Cannot be done. The input type file is one of the most protected objects by the browsers. Some browsers allow you to do more things than others, depending on what they consider "safe".
You could use a flash button for it. In fact, there are very nice plugins written to make file uploading a nicer thing, such as Uploadify.
Assign to the input role="button"
Nope... that's how you do it. Compare here.
You can try instead of any wrapper for input type "file".
<label for="photo"><span class="button">CHOOSE A FILE</span></label>
Check this ... http://jsfiddle.net/pFK74/
You can do this ugly jQuery hack:
$('input:file').each(function(){
var $input = $(this);
$input.before($('<div>').height($input.height()).width($input.width()).css(
{
cursor: 'pointer',
position: 'absolute',
zIndex: $input.css('z-index')
}).click(function(){
$(this).hide();
$input.click();
$(this).show();
}));
});
But it prevents the animation you normally see when you mousedown on a button element. JSFiddle
You can put an image instead, and do it like this:
HTML:
<img src="/images/uploadButton.png" id="upfile1" style="cursor:pointer" />
<input type="file" id="file1" name="file1" style="display:none" />
JQuery:
$("#upfile1").click(function () {
$("#file1").trigger('click');
});
CAVEAT: In IE9 and IE10 if you trigger the onclick in a file input via javascript the form gets flagged as 'dangerous' and cannot be submmited with javascript, no sure if it can be submitted traditionaly.