自动点击/强制触发js功能

时间:2012-08-14 15:03:03

标签: javascript jquery asp.net ajax asp.net-mvc-3

我有我的MVC视图..

 //Submit file
 <% using (Html.BeginForm("MethodName","ControllerName", FormMethod.Post, new { enctype = "multipart/form-data"})) { %>         
     <input type="file" name="file" id="file"/>
     <input type="text" id="file-name" name="Id"/>
     <input type="submit" value="Submit" name="Submit"/>
 <% } %>     

//Save link.
 <span class="Update" onclick="js.function()">Update</span>

一旦我点击“提交”按钮,我就会转到控制器和方法来运行一些将文件提交到数据库的代码。完成后,我需要自动点击/强制点击保存链接,以便在提交后运行js功能..我该怎么做。

3 个答案:

答案 0 :(得分:2)

我会使用Ajax.BeginForm,在OnSuccess处理程序中,您可以单击按钮。你的代码看起来像这样(没有经过测试,但应该引导你朝着正确的方向):

<% using (Ajax.BeginForm("MethodName","ControllerName",
    new AjaxOptions { 
        OnSuccess ="OnSuccess",
        OnFailure ="OnFailure" 
    },  
    new { 
        enctype = "multipart/form-data"
    })) { %>         
     <input type="file" name="file" id="file"/>
     <input type="text" id="file-name" name="Id"/>
     <input type="submit" value="Submit" name="Submit"/>
 <% } %>    

<强>的Javascript

function OnSuccess() {
    $('.Update').trigger('click');
}

修改:如果您没有尝试上传文件,我的上述答案将是您想要的。但是,当我注意到你试图发布一个文件时,我已经对此进行了一些调查;并且你不能使用ajax上传文件而不使用html 5,iframe hacks等。在我看来,你最好的选择是使用上传者uploadifyplupload使用html5来解决这个问题,基于你如何设置它们的闪光或黑客攻击。

此外,binding-httppostedfilebase-using-ajax-beginform是一个类似的问题,可能会有所帮助。

答案 1 :(得分:0)

您可以通过多种方式执行此操作。您可以使用提交按钮作为触发器,防止默认情况发生,这将是发布的标准方法。然后调用jquery post / get / ajax方法。从那个帖子/ get / ajax继承之后运行你想要做的任何其他事情。

如果您还有其他想法,可以点击带有jquery的按钮,即: $('button').trigger('click');

不幸的是,你的描述有点开放,所以很难给出具体的答案。

答案 2 :(得分:0)

为了自动trigger点击(或任何其他类似事件),您需要首先建立如下事件:

// setting up the event (in case they actually click it)
$('.Update').on('click', function () {
       test();
});

// this will automatically call it
$('.Update').trigger('click');

// whatever your function is doing
function test () {
    alert('here');
}

jsFiddle DEMO