Jquery不会从数字中删除逗号和美元符号

nam*_*nam 0 javascript jquery asp.net-core-mvc visual-studio-2015 asp.net-core

在我的 ASP.NET MVC Core 项目中,在下面View我使用 jquery 尝试在提交表单之前从 SaleAmount 输入标记中删除 $ 符号和逗号。但它没有做任何事情。当我将 alert('Test') 放入 myJSFunction() 中时,警报成功弹出,这意味着该函数被调用,但它是用于删除逗号的代码,并且 $ 不起作用。

型号:

public class SaleViewModel
{
    [DisplayFormat(DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]
    public float? SaleAmount { get; set; }
    ....
}
Run Code Online (Sandbox Code Playgroud)

控制器

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> UpdateSales(List<SaleViewModel> model, string returnUrl = null)
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

查看

@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>
}
Run Code Online (Sandbox Code Playgroud)

小智 5

您的代码不会使用修改后的文本更新文本框的值。无论如何,您取消提交,因此不会发布任何内容。您可以使用

$("#target").submit(function () {
    var textboxes = $('.saleAmt');
    $.each(textboxes, function(index, item) {
        var text = $(this).val().replace(/[$,]/g, ''); // remove characters
        $(this).val(text); // update value
    });
});
Run Code Online (Sandbox Code Playgroud)

旁注,没有必要使用 parseFloat()