-1

내 ASP.NET MVC 핵심 프로젝트에서 다음을 입력하십시오. View jquery를 사용하여 양식을 제출하기 전에 SaleAmount 입력 태그에서 $ 기호와 쉼표를 제거하려고합니다. 하지만 아무 것도하지 않습니다. myJSFunction() 안에 alert ('Test')를 넣으면 경고가 성공적으로 팝업되어 함수가 호출되었지만 쉼표를 제거하는 코드이고 $가 작동하지 않는다는 의미입니다.Jquery는 숫자에서 쉼표와 달러 기호를 제거하지 않음

모델 :

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> 
} 
+0

parseFloat() 당신의 값을 대체 사용하지하지만 결코를 재 할당 할 필요가 없습니다. 그러나 어쨌든 제출을 취소 했으므로 양식은 아무 것도 표시하지 않습니다. –

+0

try :'parseFloat ($ ('. saleAmt'). val ($ ('. saleAmt')) val(). (/ $/g, '')); ' –

답변

3

귀하의 코드가 일을 업데이트하지 않습니다 텍스트 상자에 수정 된 텍스트가있는 값. 그리고 어떠한 경우에도 제출을 취소하면 아무 것도 게시되지 않습니다. 당신은

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

사이드 노트를 사용할 수 있습니다, 텍스트 상자에 업데이트 된 값으로

+0

여전히 작동하지 않습니다. 나는 당신의 코드를'$ ("# target")으로 대체 할 때 알아 차렸다. (function {) { var textboxes = $ ('. grantAmt') val(); alert (textboxes); }); '라고 입력하고 15,481 달러를 입력하고 Save 버튼을 클릭하면 $ 15,481이라는 경고가 나타납니다. 이는 아마도 $ .each (...) 부분이 작동하지 않는다는 것을 의미합니다. – nam

+0

죄송합니다 -'$ .each (textboxes, function (index, item) {': –

+0

)하지만 원래 코드에는 그대로 있습니다. 바꿀 뭔가가 있었 니? 내가 당신의 코드에 주목 한 또 다른 점은 SaleAmount만이 Db에서 null이되지만 SaleAmount 상자와 함께'@Html.EditorFor (r => r [i] .StateName)'에 다른 입력을 변경하면 stateName 변경 사항이 반영됩니다 Db에서 정확하게. 따라서 SaleAmount가 여전히 null로 설정된다는 것을 제외하고는 POST가 여전히 작동 중입니다. – nam

관련 문제