Javascript Jquery未从数字中删除逗号和美元符号
在我的ASP.NET MVC核心项目中,在下面的Javascript Jquery未从数字中删除逗号和美元符号,javascript,jquery,visual-studio-2015,asp.net-core,asp.net-core-mvc,Javascript,Jquery,Visual Studio 2015,Asp.net Core,Asp.net Core Mvc,在我的ASP.NET MVC核心项目中,在下面的视图中中,我使用jquery尝试在提交表单之前从SaleAument输入标记中删除$symbol和逗号。但它什么也没做。当我将警报(“Test”)放在myJSFunction()中时,警报成功弹出,这意味着调用了该函数,但用于删除逗号和$的代码不起作用 型号: public class SaleViewModel { [DisplayFormat(DataFormatString = "{0:C0}", ApplyFormatInEditM
视图中
中,我使用jquery尝试在提交表单之前从SaleAument输入标记中删除$symbol和逗号。但它什么也没做。当我将警报(“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>
}
控制器:
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>
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务UpdateSales(列表模型,字符串returnUrl=null)
{
....
}
查看:
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>
}
@model-IList
....
....
@对于(int i=0;ir[i].SaleAmount,new{htmlAttributes=new{@class=“saleAmt”})
....
}
拯救
@节脚本
{
$(函数(){
$(“#目标”)。提交(功能(事件){
event.preventDefault();
myJsFunction();
});
});
函数myJsFunction(){
parseFloat($('.saleAmt').val().replace(/,/g',).replace(/$/g',);
返回false;
}
}
您的代码不会用修改后的文本更新文本框的值。在任何情况下,您都会取消提交,因此不会发布任何内容。你可以用
$("#target").submit(function () {
var textboxes = $('.saleAmt');
$.each(textboxes, function(index, item) {
var text = $(this).val().replace(/[$,]/g, ''); // remove characters
$(this).val(text); // update value
});
});
旁注,无需使用
parseFloat()
您的代码不会用修改后的文本更新文本框的值。在任何情况下,您都会取消提交,因此不会发布任何内容。你可以用
$("#target").submit(function () {
var textboxes = $('.saleAmt');
$.each(textboxes, function(index, item) {
var text = $(this).val().replace(/[$,]/g, ''); // remove characters
$(this).val(text); // update value
});
});
旁注,无需使用
parseFloat()
替换值,但决不将更新后的值重新分配给文本框。但是您已经取消了提交,因此表单无论如何都不会发回任何内容。请尝试:parseFloat($('.saleAmt').val($('.saleAmt').val().replace(/,/g',).replace(/$/g',)代码>替换值,但决不将其重新指定给文本框的更新值。但是您已经取消了提交,因此表单无论如何都不会发回任何内容。请尝试:parseFloat($('.saleAmt').val($('.saleAmt').val().replace(/,/g',).replace(/$/g',)代码>仍不工作。我注意到当我用$(“#target”).submit(函数(){var textboxs=$('.grantAmt').val();alert(textboxs);)替换代码时
输入,比如说$15481,然后点击Save按钮,弹出$15481的警报,这意味着可能$。每个(…)
部分都不工作。Oops-应该是$。每个(文本框、函数(索引、项){
:)但这就是您的原始代码中的内容。您是想更改其他内容吗?我注意到您的代码中的另一件事是,如果我更改@Html.EditorFor(r=>r[I].StateName)中的其他输入,数据库中只有SaleAmount变为null
除了SaleAmount框,stateName的更改在Db中正确反映。因此,除了SaleAmount仍然为空之外,帖子仍然有效。我在您之前的评论之后编辑了答案:)(它是$。每个(saleAmt,
),您不可能提交带有问题代码的表单(您已经使用event.preventDefault();
和return false;
)两次取消了它,所以您还没有告诉我们其他一些事情。仍然不起作用。我注意到当我用$(“#目标”).submit(函数(){var textboxs=$('.grantAmt').val();alert(textboxs);}替换您的代码时;
然后输入,比如说$15481,然后单击Save按钮,弹出$15481的警报,这意味着可能$。每个(…)
部分都不工作。Oops-应该是$。每个(文本框、函数(索引、项){
:)但这就是您的原始代码中的内容。您是想更改其他内容吗?我注意到您的代码中的另一件事是,如果我更改@Html.EditorFor(r=>r[I].StateName)中的其他输入,数据库中只有SaleAmount变为null
除了SaleAmount框,stateName的更改在Db中正确反映。因此,除了SaleAmount仍然为空之外,帖子仍然有效。我在您之前的评论之后编辑了答案:)(它是$。每个(saleAmt,
),您不可能提交带有问题代码的表单(您已经使用event.preventDefault();
和return false;
两次取消了它),所以还有一些事情您没有告诉我们。