Удалить символы, такие как%, $ из текста во время публикации с помощью MVC / Razor - PullRequest
1 голос
/ 20 мая 2019

У меня есть страница бритвы C #, которая содержит текстовые поля, которые отправляются обратно на сервер.

В C # типом полей является int, но я бы хотел, чтобы пользователь мог вводить '%' в поля, но чтобы страница отправляла обратно int. Это возможно?

В настоящее время я отфильтровываю «%» с помощью JavaScript в действии отправки, но проблема в том, что пользователь может видеть, что «%» исчезает за полсекунды до отправки, что неприглядно. Могу ли я удалить символ% в другом месте?

Бритва

<td>@Html.TextAreaFor(m => m.percentComplete, new { @class = "interactive_editor percent_editor", rows = 1 })</td>

C #

public int percentComplete { get; set; }

JavaScript

$('#submit_page').click(function () {
    percentsToNumbers();
});

function percentsToNumbers() {
    $(".percent_editor").each(function () {
        var originalText = $(this).val();
        var number = originalText.replace('%', '');
        $(this).val(number);
    });
}

Примечание В прошлом я создавал отдельное поле, например centString , для отображения, которое преобразуется в отдельное поле Percent после обратной отправки. Но если бы я мог просто преобразовать его во время обратной передачи страницы, чтобы не было двух полей в модели, было бы лучше.

1 Ответ

1 голос
/ 21 мая 2019

Рассматриваете скрытое поле для хранения и отправки обратно отформатированного содержимого?Вместо того, чтобы назначать замененное значение текстовому полю, назначьте его скрытому полю:

function percentsToNumbers() {
    $(".percent_editor").each(function () {
        var originalText = $(this).val();
        var number = originalText.replace('%', '');
        //$(this).val(number);
        $('.percent_editor_hidden').val(number); //Hidden field
    });
}

И при загрузке страницы свяжите одну и ту же переменную как с текстовым полем, так и со скрытым полем.Обратите внимание, что если вы используете пост не-ajax, вам нужно установить свойство name скрытого поля, чтобы оно совпадало с именем параметра в контроллере.то есть percentComplete.И иметь другое имя для текстового поля.

К вашему сведению: если вы вводите число, у вас должна быть не текстовая область, а текстовое поле со знаком процента (%) рядом с ним, чтобы пользователь могМожно понять, что на входе должен быть номер.Поскольку вы привязываете его к типу int в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...