Блокирование кнопки в форме

104
11 января 2021, 02:00

нужно сделать так, чтоб кнопка Save блокировалась, если UserName пустой. Но не понимаю как это сделать)

<script>
        function agreeForm(f)
        {
            if (f.UserName = "")
                f.Save.disabled = "1"
        }
</script>
<form asp-controller="Calculator" asp-action="Edit" method="post">
    @Html.HiddenFor(m => m.ErrorCode)
    @Html.HiddenFor(m => m.Id)
    <table>
        <tr>
            <th>Computer name:</th>
            <th>User Name:</th>
            <th>Expression:</th>
            <th>Result:</th>
            <th>Error:</th>
            <th>Date:</th>
        </tr>
        <tr>
            <td>@Html.EditorFor(m => m.ComputerName)</td>
            <td>@Html.EditorFor(m => m.UserName)</td>
            <td>@Html.EditorFor(m => m.Expression)</td>
            <td>@Html.EditorFor(m => m.Result)</td>
            <td>@Html.EditorFor(m => m.Description)</td>
            <td>@Html.EditorFor(m => m.Date)</td>
        </tr>
    </table>
    <input type="submit" name="Save" class="btn btn-default" value="Save" disabled="0" onchange="agreeForm(this.form)"/>
</form>
Answer 1

ASP.NET Razor генерирует статическую разметку. Динамическое поведение необходимо делать вручную, на JS.

В обработчике вы присваеваете (=) вместо сравнения (===) и лишь пытаетесь блокировать кнопку, но никогда ее не разблокируете (...disabled = false)

Кроме того, у вас достаточно примитивное правило валидации, здесь можно обойтись возможностями HTML5 - с аттрибутом required, вообще без JS, например:

<form>
  <label for="choose" required>Would you prefer a banana or cherry?</label>
  <input id="choose">
  <button>Submit</button>
</form>

Кнопка submit просто не нажмется, пока не удовлетворены все валидационные правила.

ЗЫ Проверку необходимо обязательно продублировать на сервере.

READ ALSO
Редактор графиков на Qt 4.8

Редактор графиков на Qt 4.8

Я делаю график на QtПока на этапе строительства сетки

145
Как создать проект для работы с win 32 api

Как создать проект для работы с win 32 api

Хочу отметить, что у меня Visual Studio 2019, пакет v142Как мне создать проект для работы с win 32 api

137