微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用jquery单击事件后应更改输入按钮的值

如何解决使用jquery单击事件后应更改输入按钮的值

我尝试在点击输入按钮后更改其值。按钮本身是一个提交按钮,控制器通过 RedirectToAction 返回页面。我的问题是,我可以更改按钮的值,但此新值仅显示一毫秒,然后才将其设置回其原始值。脚本触发后页面是否重新加载?或者为什么在脚本触发后按钮值被设置回来了?

这是我的代码: 按钮:

@using (Html.BeginForm("StartNewM2OLIEProcess","Patient",new { label = Model.PatientID },FormMethod.Post))
        {
            <input type="submit" id="btnStartProcess" value="M²OLIE Prozess starten" class="btn btn-primary" />
        }

脚本

@section Scripts{

    <script type="text/javascript">
       
        $("#btnStartProcess").on('click',function () {
            var self = $(this);
            var errorMsg = '@errorMsg';
            if (errorMsg == '') {
                //self.attr('M2OLIE Prozess starten','Prozess gestartet');
                self.val('Prozess läuft...');
            }
            else {
                self.val("M²OLIE Prozess starten");
            }
        });

    </script>

    <script type="text/javascript">
    var message = '@message';
    if(message){
        alert(message);
    }
    </script>
}

所以脚本被正确触发,我可以用调试器测试。而且我还可以看到调试过程中按钮的值发生了变化,但是脚本一结束,该值就会变回 Html 表单中定义的值。这里发生了什么?

解决方法

当第一次点击时,jQuery 事件被执行,然后页面被发送到动作。 您必须发布页面或管理点击事件。

用你的脚本测试这段代码

$("form").submit(function (e) {
    e.preventDefault(); 
});

我给大家举个例子,看看表单发布后的变化。

在控制器中

[HttpGet]
public ActionResult StartNewM2OLIEProcess()
{
    return View();
}
[HttpPost]
public ActionResult StartNewM2OLIEProcess(string myText)
{
    ViewBag.ButtonText = myText;
    return View();
}

在视图中

@{
    ViewBag.Title = "Test";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (Html.BeginForm("StartNewM2OLIEProcess","Home",FormMethod.Post))
{
    string buttonValue = "M²OLIE Prozess starten";
    if (!string.IsNullOrEmpty(ViewBag.ButtonText))
    {
        buttonValue = ViewBag.ButtonText;
    }
    <input type="text" id="myText" name="myText" />
    <input type="submit" id="btnStartProcess" value="@buttonValue" class="btn btn-primary" />
}
<div id="myDiv" style="width:300px;height:50px;background:#FF5511;color:white;text-align:center;font-weight:bold;"></div>
@section scripts{
    <script>
       var result = '@(ViewBag.ButtonText)';
       if (result != null) {
           document.getElementById("myDiv").innerText = result;
       }
    </script>    
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。