【发布时间】:2016-09-25 06:13:50
【问题描述】:
在我的 ASP.NET MVC Core 项目中,在以下 View 中,我使用 jquery 尝试在提交表单之前从 SaleAmount 输入标记中删除 $ 符号和逗号。但它什么也没做。当我将 alert('Test') 放入 myJSFunction() 中时,成功弹出警告,这意味着该函数已被调用,但它是删除逗号的代码,并且 $ 不起作用。
型号:
public class SaleViewModel
{
[DisplayFormat(DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]
public float? SaleAmount { get; set; }
....
}
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> UpdateSales(List<SaleViewModel> model, string returnUrl = null)
{
....
}
查看:
@model IList<MyProj.Models.SaleViewModel>
....
<form id="target" asp-controller="DbRelated" asp-action="UpdateSales" asp-route-returnurl="@ViewData[" ReturnUrl"]" method="post" onsubmit="myJsFunction()">
<table class="table">
<thead>
....
</thead>
<tbody>
@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td>@Html.EditorFor(r => r[i].SaleAmount, new { htmlAttributes = new { @class = "saleAmt" } })</td>
....
</tr>
}
</tbody>
</table>
<button type="submit" class="btn btn-default">Save</button>
</form>
@section scripts
{
<script>
$(function () {
$("#target").submit(function (event) {
event.preventDefault();
myJsFunction();
});
});
function myJsFunction() {
parseFloat($('.saleAmt').val().replace(/,/g, '').replace(/$/g, ''));
return false;
}
</script>
}
【问题讨论】:
-
您替换值,但永远不要将其重新分配给文本框的更新值。但是您无论如何都取消了提交,因此该表单无论如何都不会发回任何内容。
-
试试:
parseFloat($('.saleAmt').val($('.saleAmt').val().replace(/,/g, '').replace(/$/g, '')));
标签: javascript jquery visual-studio-2015 asp.net-core asp.net-core-mvc