一次执行后停止jQuery执行

时间:2019-02-16 06:51:59

标签: jquery asp.net-mvc model-view-controller

我有一个jQuery脚本可以在页面加载时执行自动提交触发 并且重复执行,我想在页面加载后制作一个按钮老虎机

JavaScript

$(document).ready(function () {

    $("[id*='sub']").click();

});

HTML代码

@using (Html.BeginForm("GenerateQR", "TRoom", FormMethod.Post))
{
    <input type="text" style="display:none;" name="HlId" value="@HttpContext.Current.Session["USERID"].ToString()" />
    <input id="sub" type="submit" style="display:none" value="Click Here To Generate QR Code" />
}

谢谢。

3 个答案:

答案 0 :(得分:0)

jQuery .one()附加一个处理程序,该处理程序每​​个事件每个元素最多运行一次。因此,您可以说{p>而不是.click()

 `.one('click', function() { ... })`.

您可以在jQuery's documentation for .one()上了解此内容。

由于您要提交页面加载,因此请按以下步骤解决它:

$(document).ready(function(){
const autSubmit =$(this).find("input[type='submit']);
autSubmit.one('click',function(){
/* Any code you will like to execute    onSubmit*/ });
autSubmit.trigger('click');});

第一次执行后,尝试单击按钮,您会注意到单击处理程序中的代码将不会再次执行,我认为这是您想要的,因此您也可以在该单击处理程序中禁用按钮。 所以我们有

` /* Any code you will like to execute onSubmit*/` 

上面您可以替换为

$(this).attr('disabled',true)

实际上,该按钮已被禁用,但事实是,第一次单击该按钮后,单击处理程序将不会再次触发。

答案 1 :(得分:0)

最终使代码正常工作   

    window.onload = function () {

        if (localStorage.formSubmitted !== 'true')
        {
            localStorage.setItem("formSubmitted", "true");
            document.getElementById('sub').click();
        }
        else
        {
            localStorage.removeItem("formSubmitted");
        }
    }
</script>

谢谢大家的帮助

答案 2 :(得分:0)

我也认为最好将会话用于相同的目的                   window.onload = function(){

        if (sessionStorage.formSubmitted !== 'true')
        {
            sessionStorage.setItem("formSubmitted", "true");
            document.getElementById('sub').click();
        }
        else
        {
            sessionStorage.removeItem("formSubmitted");
        }
    }
</script>