javascript onclick不适用于chrome和IE8,但适用于firefox 7.0.1

javascript onclick不适用于chrome和IE8,但适用于firefox 7.0.1,javascript,jsp,Javascript,Jsp,我有这个javascript <script type="text/javascript"> function HandleBrowseClick() { var fileinput = document.getElementById("userFile"); fileinput.click(); } </script> <script type="text/javascript"> function callAddUsers() {

我有这个javascript

<script type="text/javascript">
function HandleBrowseClick()
{
    var fileinput = document.getElementById("userFile");
    fileinput.click();
}
</script>

<script type="text/javascript">
    function callAddUsers() {
            //alert("callAddUsers");
        var fup = document.getElementById('userFile');
    var fileName = fup.value;
        document.f1.action = "addUsers.action";
        document.f1.submit();
    }
</script>

函数HandleBrowseClick()
{
var fileinput=document.getElementById(“userFile”);
fileinput.click();
}
函数callAddUsers(){
//警报(“callAddUsers”);
var fup=document.getElementById('userFile');
var fileName=fup.value;
document.f1.action=“addUsers.action”;
document.f1.submit();
}
这是我的HTML

<input type="file" class="button" id="userFile"
            name="userFile" onChange="callAddUsers();" style="display: none"/> 

<input type="button" class="button" value="Add User" id="fakeBrowse" onclick="HandleBrowseClick();"/>

我使用这种两步调用方式是因为我想为我的文件上传按钮使用特定的名称,而不是像“选择文件、浏览..等”这样的默认名称

问题细节。 在Firefox中,一切都正常工作。调用操作并正确执行操作

在IE中,它仍然调用callAddUsers()函数,但不调用操作

在Chrome中,它不适用于
fileinput.click()

问题出在哪里?


非常感谢。

显示:表单和表单输入上无
,这肯定会使它们不可提交;)出于安全原因,这是由浏览器完成的

如果您需要隐藏可见输入,请将其设置为
不透明度:0.1
宽度:1px;溢出:隐藏


但是关于您的具体问题,您可能只想使用
标签
标记。它将接收到的所有点击传输到专用的
输入
。这样,您就可以使丑陋的文件输入以您想要的任何方式显示。

试试下面的代码

<input id="dummyInput2" size="10" readonly><input type="file" id="userFile" name="userFile" value="" size="1" onchange="callAddUsers(this,\'dummyInput2\')" /><input type="button" class="button" value="Add User" id="fakeBrowse"/>

function callAddUsers(obj,target)
{
    document.getElementById(target).value = obj.value;
    var fup = document.getElementById('userFile');
    var fileName = fup.value;
        document.f1.action = "addUsers.action";
        document.f1.submit();

}
#dummyInput2
{
    z-index :1
    cursor : pointer;
}
#userFile
{
    position:absolute;
    top:xxx;//change to what you wish
    left:xxx;//change to what you wish
    z-index :2;
    opacity : 0;
    filter : alpha(opacity=0);
    cursor : pointer;
}
#fakeBrowse
{
    position :absolute;
    cursor : pointer;
    width : 30px;//change to what you wish
    height: 23px;//change to what you wish
}

函数callAddUsers(对象、目标)
{
document.getElementById(target).value=obj.value;
var fup=document.getElementById('userFile');
var fileName=fup.value;
document.f1.action=“addUsers.action”;
document.f1.submit();
}
#dummyInput2
{
z指数:1
光标:指针;
}
#用户文件
{
位置:绝对位置;
top:xxx;//根据您的意愿进行更改
左:xxx;//更改为您想要的
z指数:2;
不透明度:0;
过滤器:alpha(不透明度=0);
光标:指针;
}
#假浏览
{
位置:绝对位置;
光标:指针;
宽度:30px;//根据需要更改
高度:23px;//根据需要更改
}

希望这对您有所帮助。

将文件输入包装在
标签中,以设置它们的样式。”因为这似乎是您正在尝试做的。但是我希望以按钮样式上载输入文件。然后-在
内放置一个
按钮。然后,这就成了我面临的问题。正确的?因为现在我正在尝试将输入文件事件传输到另一个按钮。您是否可以将输入类型改为submit而不是button?通过提供
opacity:0.1
,对于不同的浏览器,效果仍然不同。在IE中,它清晰地显示:(