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

Value of an input button should be changed after click event with 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事件被执行,然后页面被发送到该动作。 您必须 post 页面或管理点击事件。

使用您的脚本测试此代码

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

我给大家举个例子看看post.

表格后的变化是怎样的

在控制器中

[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>    
}