我有以下形式的文件输入,需要根据Ajax调用的结果来激活它。

<form id="checkin_form" enctype="multipart/form-data" method="post" style="visibility:hidden;">
    <input type="file" name="file[]" id="checkinfile"><br>
</form>

触发点击功能的javascript函数为:

function clickCheckInFile() 
{
    var file_index = selected_file.id;
    var file_name = $(selected_file).children('td:nth(1)').text();

    $.ajax({
        url: "scripts/check_file.php",
        type: "POST",
        dataType:'json',
        data: {file_index: file_index, file_name: file_name},
        success: function(data){
        if (data['response'] == 200)
        {
            if (data['type'] != "dir")
            {
                if (data['checked_out'] == 1 || data['checked_out'] == "1")
                {
                    if (data['checked_out_by'] == username)
                    {
                        if (data['user_permissions'][1] == 1)
                        {
                            $('#checkinfile').click(); 
                        }
                        else
                        {
                            alert('Access Denied.');
                        }
                    }
                    else
                    {
                        alert('Access Denied');
                    }
                }
                else
                {
                    alert('File is not checked out.');
                }
            }
            else
            {
                alert('Cannot check out a folder');
            }
        }
        else if (data['response'] == 300)
        {
            alert(data['message']);
        }
        else
        {
            handleAjaxResponse(data['response']);
        }
    }});
}

该行不起作用是$('#checkinfile')。click();。 一部分。 我可以在该位置触发一条警报消息,以便代码调用该行。 当我将单击移动到ajax调用之前时,它工作正常。

#1楼 票数:2

看来您正在尝试强制执行click事件。 .click()表示单击时该怎么做-它不会触发点击。

为此使用.trigger():

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

然后,您需要单独添加单击时的操作,如下所示:

 $('#checkinfile').click(function(){
//do things here
});

至于文件浏览器问题 从本文尝试以下解决方案:

将输入position:absoluteposition:absolutetop:*number that will remove it from viewport* ,它将起作用

这是.trigger()的文档

#2楼 票数:2

虽然通常最好在触发事件时使用.trigger()代替 (如果出于清晰性没有其他原因),此代码行似乎正常工作:

$('#checkinfile').click();

(当然,假设选择器找到了您期望的元素)

但是,真正的问题是...触发click事件时,您希望此元素什么? 根据发布的代码,没有为此的事件处理程序。

这是文件输入,所以也许您希望它为用户打开文件对话框? 尽管某些浏览器可能会这样做,但我怀疑这不是标准行为或预期行为。 文件输入因此类事件(事件,样式等)而臭名昭著,有时可能会有些痛苦。

怀疑正在发生的情况是,出于安全原因,浏览器在调用文件对话框之前需要实际的用户交互。 同样,此行为可能是特定于浏览器的,但请在此处查看几个示例:

模式似乎是,即使从代码中打开文件对话框,也需要手动交互。

#3楼 票数:0

看一下这个:

 $('#clickme').click(function() { $('#checkinfile').click(); }); $(document).on('change', '#checkinfile', function() { alert($(this).val()); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form enctype="multipart/form-data" id="checkin_form" style="visibility:hidden;"> <input type="file" name="file" id="checkinfile"> </form> <button id="clickme">click</button> 

#4楼 票数:-1

这很容易

$( "example" ).on( "click", function() {
    alert( "click" );
});

您可以在此处查看文档: http : //api.jquery.com/on/

希望对您有帮助

  ask by Sean translate from so

未解决问题?本站智能推荐:

7回复

Ajax调用后Jquery函数不起作用

我有这个功能: 我的页面使用收藏夹按钮加载内容,但在 Ajax 调用并生成其他新内容后,当您单击新内容的按钮时,该功能不起作用。 什么可能不正确?
1回复

jQuery:Ajax调用不起作用

我正在使用Jquery计算用户的点击次数和按键次数。 现在,当用户单击“发送”按钮时,我想将其发送到另一页以保存这些数据,但是我认为ajax调用无法正常工作,并且非常简单。 但是没有警报和控制台日志显示。 我是否需要“关闭”按钮标签之间的表单并指定method和action ? 还
3回复

我的函数不起作用,Ajax调用,JQuery,在外部调用?我不知道

如果您想了解我的问题,请阅读让我很生气的那段糟糕的代码的每一步: 所有这些的上下文都是API,因此我必须对外部JSon文件进行ajax调用。 该呼叫有效:我得到了响应,并且可以按自己的意愿管理数据。 jQuery(function($) { $.ajax({ url: 'http:
1回复

如果Ajax和Jquery中的其他条件不起作用

我是Ajax和JQuery的新手,简单的要求是显示一个由用户使用number输入字段选择的值。 我的代码如下:
1回复

jQuery.click()在使用AJAX添加的动态对象上不起作用

我有一个页面,上面显示一个带有id=button-link 。 在按钮之后,还有另一个id为display-content div。 单击该按钮后,我正在进行AJAX调用,该调用将提取一些内容并将其显示在第二个div中。 这是我正在使用的JavaScript代码: 这完全符合预期,我正
1回复

$ajaxurl的Ajax和jQuery调用不起作用

我会尽力解释一下。 我有通过ajax中的URL连接到的REST api。 当我获得该信息时,我想更新其中的内容,以便根据api调用获得的数据来更新内容。
2回复

我的jquery动画在ajax调用后不起作用

我正在尝试使我的动画在进行Ajax调用后继续工作。 当用户登陆页面时,它工作正常。 但是,如果用户导航回到首页,则动画将不会运行。 我对Jquery还是很陌生,可以给我一些提示吗? 我认为这与.on有关,但我不确定语法是否如此。 任何帮助将不胜感激。 这是代码:
1回复

jQuery/AJAX函数不起作用onChange事件

我试图代表另一个下拉菜单的值填充一个下拉菜单。 这里的问题是我试图在选择标记的onChange事件中调用的函数没有被编译。 并且在console.enter代码中出现错误。 HTML: jQuery: 错误: insert_balance:180 未捕获的Referenc