Javascript Jquery触发器(';单击';)并打开(更改)

Javascript Jquery触发器(';单击';)并打开(更改),javascript,jquery,html,css,triggers,Javascript,Jquery,Html,Css,Triggers,我正在尝试设置我的input=文件的样式,因此我将其隐藏起来并使用一个按钮。点击按钮的功能我已经写了这个代码 $('button').click(function() { $('input[type=file]').trigger('click'); }); 但我也希望在选择文件后尽快提交表单。所以我写了 $('input[type=file]').on('change', function() { // select the form and submit $(form)

我正在尝试设置我的input=文件的样式,因此我将其隐藏起来并使用一个按钮。点击按钮的功能我已经写了这个代码

$('button').click(function() {
    $('input[type=file]').trigger('click'); 
});
但我也希望在选择文件后尽快提交表单。所以我写了

$('input[type=file]').on('change', function() { 
    // select the form and submit
$(form).submit();
});
当我使用触发器隐藏输入[type=file]时,这不起作用,但当我显示Choose文件时,它才起作用。onChange函数开始工作


我需要知道input[type=file]是隐藏的,并且只使用trigger提交表单。

我将建议一种比触发
单击更好的方法。对
输入使用
标签
,并将所有样式的按钮应用于该标签

HTML:

Jquery:

$('input[type=file]').on('change', function() { 
    // select the form and submit
$(form).submit();
});
// You can completely avoid the `trigger` code.

你甚至不需要按钮。您只能拥有输入字段并使用不透明度将其隐藏,并且使用
:after
可以设置按钮的样式。请注意,
:after
与IE7及更早版本不兼容:

HTML

JQuery

$('input[type=file]').on('change', function () {
    $(form).submit();
});

这里是演示:

尝试使用
$('input[type=file]').live('change',function(){
我使用的是Jquery 1.7及以上版本,所以我使用的是ONNo,不要使用
.live()
。它在jQuery 1.7中被弃用,在jQuery 1.9中被完全删除。@PhilipJensBramsted
。live
自jQuery 1.7以来一直被弃用,并在1.9中被完全删除。
。on
是一条路:@Andy然后我也学到了一些东西
$('input[type=file]').on('change', function() { 
    // select the form and submit
$(form).submit();
});
// You can completely avoid the `trigger` code.
<form>
    <input type="file">
</form>
input[type="file"] {
    margin:19px;
    position:absolute;
    left:0;
    top:0;
    z-index:2;
    font-size:31px;
    clip:rect(0px, 123px, 40px, 0px);
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    filter:alpha(opacity=0);
    -moz-opacity:0;
   -khtml-opacity:0;
   opacity:0;
}
form:after {
    content:'upload file';
    font:small-caps 15px Georgia;
    letter-spacing:1px;
    border-radius:10px;
    border:1px solid #eee;
    width:100px;
    padding:10px;
    margin:20px;
    text-align:center;
    position:absolute;
    left:0;
    top:0;
    z-index:1;
    background-color:#f8f8f8;
}
form {
    color:#666;
}
form:hover:after {
    background-color:#f3f3f3!important;
    color:#c00;
}
$('input[type=file]').on('change', function () {
    $(form).submit();
});