2015-08-23 11 views
6

Chciałbym autofocus na edytorze do mojej aplikacji, ale nie mogę tego zrobić. Z powodzeniem wykorzystałem autofokus na polu tekstowym, ale chciałbym użyć edytora, aby zachować uniwersalność wyglądu aplikacji.Autofocus na EditorFor

Wszelkie rozwiązania tego problemu byłyby mile widziane, dziękuję.

Moja próba:

@Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" }, autofocus = "" }) 
+0

@DavidG tak próbowałem, że zbyt. – Jon

Odpowiedz

7

To dlatego, że używasz EditorFor zamiast czegoś konkretnego jak TextBoxFor.

@Html.TextBoxFor(model => model.Name, new { htmlAttributes = new { 
        @class = "form-control" }, autofocus="autofocus"}) 

Albo można to zrobić za pomocą jQuery:

<div class="editor-field focus"> 
    @Html.EditorFor(model => model.Description) 
    @Html.ValidationMessageFor(model => model.Description) 
</div> 
$(function() { 
    $('.focus :input').focus(); 
}); 

Aktualizacja:
Jak wiecie TextBoxFor zawsze tworzy pole tekstowe z wejściem typu, jednak EditorFor jest trochę inteligentny, to świadczy znaczniki oparte na typie danych właściwości.

+0

Mówisz, że aby użyć autofokusa, nie może być niejednoznaczności wejściowego typu danych? – Jon

+0

@Jon Jeśli spojrzeć na przeciążenia dla EditorFor, nie ma żadnego przeciążenia, które akceptuje htmlAttributes. Przeciążenie, którego faktycznie używasz, zabiera dodatkowe daneViewView. –

+0

Dziękuję, jestem całkiem nowy w asp.net i nie nauczyłem się jeszcze wiele jQuery, ale twoje rozwiązanie jQuery działało idealnie dla mnie. – Jon

1

Podążałem za tym wątkiem i mogłem natknąć się na odpowiedź na twoje pytanie dotyczące autofokusa na EditorFor - to wszystko Asp.Net 4.5 i MVC 5, nie to ma znaczenia.

  1. W folderze Scripts Mam jQuery plik skryptu:

    $; (function() { $ ('someclassname.') Koncentrują(); .})

Dodałem nazwę skryptu do BundleConfig i renderuję go w widoku.

  1. W widoku dodaję classname do EditorFor <div class="col-md-10" someclassname">
  2. Następnie dodać type="text" autofocus="autofocus" do @class w EditorFor'S. Tak więc, new{@class="form-control", type="text", autofocus="autofocus"
  3. To prawie wszystko, gdy DOM ładuje pole .someclassname, ustawia ostrość kursora ... PS. W rzeczywistości, jeśli po prostu (3) działa również ...
2

Umieszczasz atrybut autofokusa w niewłaściwym miejscu.

@Html.EditorFor(model => model.Description, 
    new { htmlAttributes = new { @class = "form-control" }, autofocus = "" }) 

Spróbuj to zamiast:

@Html.EditorFor(model => model.Description, 
    new { htmlAttributes = new { @class = "form-control", autofocus = "" } }) 
2

Korzystanie .Net Framework 4.5 i MVC 5, działa to dla mnie:

@Html.EditorFor(model => model.Description, new { 
    htmlAttributes = new { 
     @class = "form-control", 
     autofocus = true 
    } 
}) 
Powiązane problemy