Подтвердить что ты не робот

Установите фокус на текстовое поле - MVC3

Как настроить фокус на текстовое поле "Сумма" на загрузку страницы для следующего кода Razor в MVC3?

        <tr>
            <th>
                <div class="editor-label">
                    @Html.LabelFor(model => model.Amount)
                </div>                            
            </th>
             <td>
                 <div class="editor-field">
                    @Html.EditorFor(model => model.Amount)
                    @Html.ValidationMessageFor(model => model.Amount)
                 </div>                          
            </td>
        </tr>
4b9b3361

Ответ 1

Вы можете предоставить дополнительный класс для содержащего div:

<div class="editor-field focus">
    @Html.EditorFor(model => model.Amount)
    @Html.ValidationMessageFor(model => model.Amount)
</div> 

а затем вы можете использовать селектор класса jQuery:

$(function() {
    $('.focus :input').focus();
});

Это говорит о том, что у вас, кажется, несколько таблиц Amount texboxes в таблице, и, очевидно, только один может иметь фокус за раз. Поэтому, предполагая, что вы хотите, чтобы это было первым, вы можете сделать это:

$('.focus :input:first').focus();

Ответ 2

Откройте файл /Views/Shared/Site.Master и введите следующее после того, как jquery script включите этот script:

<script type="text/javascript">
    $(function () {
        $("input[type=text]").first().focus();
    });
</script>

Это установит фокус на первое текстовое поле на каждую форму приложения без написания дополнительного кода!

взято из http://www.tcscblog.com/2011/03/24/setting-default-focus-in-mvc-applications-with-jquery/

Ответ 3

с браузером, совместимым с html 5, вы устанавливаете автофокус

<input type="text" autofocus="autofocus" />

если вам нужна поддержка IE, вам нужно сделать это с помощью javascript

 <input type="text" id=-"mytextbox"/>
  <script type="text/javascript">document.getElementById('mytextbox').focus();</script>

в бритве:

@Html.EditorFor(model => model.Amount,new{@autofocus="autofocus"})

Ответ 4

Фокус в том, что эти элементы ввода всегда имеют атрибут id, который вы можете получить в виде строки с Html.IdFor. Таким образом, вы можете сфокусировать тот, который вы хотите, с помощью Javascript:

document.getElementById("@Html.IdFor(model => model.Amount)").focus();

Или, если вы предпочитаете jQuery:

$("#" + "@Html.IdFor(model => model.Amount)").focus();

Ответ 5

Я использую MVC4/Razor и не имею файл Site.Master в моем проекте. Однако у меня есть файл _Layout.cshtml, который применяется к каждой странице (Views/Shared/_Layout. cshtml), поэтому я добавил это в существующий script в этом файле следующим образом. Это хорошо работает для меня.

<script type="text/javascript">
    $(function () {
        $.ajaxSetup({
            // ajaxSetup code here...
            }
        });
        // Set the focus to the first textbox on every form in the app
        $("input[type=text]").first().focus();
    });
</script>