无法使用JQuery在页面加载中触发onchange事件

时间:2014-10-16 05:04:16

标签: php jquery html file-upload

目前,我有一个包含以下代码的新图片链接。

<a class="cmpn_image" href="javascript:void(0);" id="new_page_image">NEW IMAGE</a> 

 /* Associated function */
 $("#new_page_image").click(function() { 
          imgType = 'NPG';
          $("#uptext_new_page").trigger('click');
 });

点击链接后,它将打开文件上传窗口。

现在我需要的是如果url中存在值,则在页面加载时触发相同的文件输入。下面显示的是我的代码:

<script>
$(document).ready(function()
{
    var param=getparamvalue('p');   // function for getting url paramater
    if(param=='new')
    {                                // upto this is working fine
        $("#uptext_new_page").trigger('change');   // not working; here if the paramter is present the file upload window should come triggering the file input
    }
});
</script>

<div style="visibility:hidden;">
    <form method="post">
      <input type="file" name="name" id="uptext" onChange="ajaxUpload(this.form,'imageUpload.php?filename=name&amp;maxSize=9999999999&amp;maxW=1000&amp;relPath=uploads/images/&amp;colorR=255&amp;colorG=255&amp;colorB=255&amp;maxH=400','uploadProgress','&lt;br /&gt;&lt;img src=\'images/loader_light_blue.gif\' width=\'128\' height=\'15\' border=\'0\' /&gt;','&lt;img src=\'images/error.gif\' width=\'16\' height=\'16\' border=\'0\' /&gt; Error in Upload.'); return false;" />
    </form>

  <form method="post">
      <input type="file" name="name" id="uptext_new_page" onChange="ajaxUpload(this.form,'imageUpload.php?filename=name&amp;maxSize=9999999999&amp;maxW=1000&amp;relPath=uploads/reference/&amp;colorR=255&amp;colorG=255&amp;colorB=255&amp;maxH=400','uploadProgress','&lt;br /&gt;&lt;img src=\'images/loader_light_blue.gif\' width=\'128\' height=\'15\' border=\'0\' /&gt;','&lt;img src=\'images/error.gif\' width=\'16\' height=\'16\' border=\'0\' /&gt; Error in Upload.'); return false;" />
    </form>
</div>

在页面加载时,如果参数p的值为new,则应显示文件上传框。但它没有用。

我也试过

$("#uptext_new_page").change(); 

任何人都可以帮我解决这个问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我不相信您可以触发文件输入以打开“选择文件”对话框,而无需进行一些用户交互。我相信,如果用户点击另一个元素,您可以在那时触发文件对话框上的点击事件,但我认为您可以在没有用户交互的情况下执行此操作。参见:

所有这些示例都展示了当用户点击另一个元素时如何触发文件上传窗口,而不是在页面加载时触发。

使用JavaScript(window.open())打开一个新窗口也是如此。如果你在没有用户交互的情况下在某个随机时间执行此操作,我相信它会被弹出窗口拦截器捕获。这可能是类似的问题。

实际上,这个问题似乎与Show input file dialog on load?重复,而且答案与我的相似(无法在没有用户互动的情况下进行)。

答案 1 :(得分:1)

你试过click,试试看

$("#uptext_new_page").trigger('click');

甚至您可以尝试为点击事件创建隐藏按钮,例如

<form method="post">
  <input type="file" name="name" id="uptext_new_page" onChange="ajaxUpload('something here'); return false;" />
  <input type="button" style="display:none;" onclick="ajaxUpload('something here'); return false;" id="uptext_new_page_bnt">
</form>

在你的jQuery尝试

$('#uptext_new_page_bnt').trigger('click');