输入按钮的值应在单击事件后更改 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>
}
我尝试在单击输入按钮后更改它的值。按钮本身是一个提交按钮,控制器通过 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>
}