函数通过jquery中的锚标记调用和重定向

时间:2014-04-30 10:33:28

标签: jquery html asp.net

我正在使用c#在asp.net中开发一个应用程序。我的页面中有四个锚标记,并且有一个名为gen_all_es()的函数。我想在每个锚标签点击上调用该函数。那些锚标记还包含href到另一个页面。我希望首先完成函数调用,然后重定向到另一个页面。我的锚标签代码如下。请检查并告诉我为什么功能没有正确调用。

ASPX代码:

<a href="test.aspx?paramControl=imagePhoto" class="btn btn-primary btn-sm" style="width:100%; margin-bottom:5px;" onclick="gen_all_es();">Add / Modify Photo</a>

JQuery代码:

function gen_all_es() {
        var divID, labelID, imageID, hiddenControlID, controlID, zoomLevel;

        $("#areaHiddenField").find('[id^="hf_es_text"]').each(function () {
            controlID = $(this).attr("id");
            divID = "lbl" + controlID.slice(11, controlID.length);
            labelID = "lbltext" + controlID.slice(11, controlID.length);
            zoomLevel = $("#ddlZoom").val();
            $(this).val(gen_es_text(divID, labelID, zoomLevel));
        });

        $("#areaHiddenField").find('[id^="hf_es_img"]').each(function () {
            controlID = $(this).attr("id");
            divID = "img" + controlID.slice(10, controlID.length);
            imageID = "image" + controlID.slice(10, controlID.length);
            zoomLevel = $("#ddlZoom").val();
            $(this).val(gen_es_image(divID, imageID, zoomLevel));
        });
    }

感谢。

2 个答案:

答案 0 :(得分:0)

似乎您的代码正常工作,函数调用首先完成,然后重定向,但您无法看到函数调用。我建议你在功能上加一个延迟:

 setTimeout(function () {               
        }, 100); //in milliseconds

在此延迟之后,您将能够在重定向之前看到函数的结果。

答案 1 :(得分:0)

我修改了你的代码。它可能不是最好的代码,但它可能对您有所帮助。 演示:http://jsfiddle.net/lotusgodkk/GCu2D/62/

$(document).ready(function () {
$(document).on('click','.btn',function(e){
    e.preventDefault();
    alert('started');
    var divID, labelID, imageID, hiddenControlID, controlID, zoomLevel;
    $("#areaHiddenField").find('[id^="hf_es_text"]').each(function () {
        controlID = $(this).attr("id");
        divID = "lbl" + controlID.slice(11, controlID.length);
        labelID = "lbltext" + controlID.slice(11, controlID.length);
        zoomLevel = $("#ddlZoom").val();
        $(this).val(gen_es_text(divID, labelID, zoomLevel));
    });

    $("#areaHiddenField").find('[id^="hf_es_img"]').each(function () {
        controlID = $(this).attr("id");
        divID = "img" + controlID.slice(10, controlID.length);
        imageID = "image" + controlID.slice(10, controlID.length);
        zoomLevel = $("#ddlZoom").val();
        $(this).val(gen_es_image(divID, imageID, zoomLevel));
    });
    alert('done');
    window.location.href = $(this).attr('href');
  });
});

因此,在执行代码后,我使用javascript重定向浏览器,而不是默认的浏览器重定向。试试这对你有帮助。

HTML:删除内嵌javascript。