2015-10-09 3 views
0

Я работаю над формой html, в которой используется jscript для выполнения таких функций, как загрузка форм, загрузка формы со значениями по умолчанию, проверка данных и другие. Затем он использует htm для отображения страницы.Установить фокус на поле формы и выбрать текст по умолчанию при загрузке формы

При загрузке формы первое поле заполняется данными по умолчанию, что соответствует 99% времени. Я хочу, чтобы первое поле формы не только фокусировалось на загрузке, но также имело выбранное по умолчанию значение (текст) так, чтобы 1% пользователей могли легко начинать вводить текст без необходимости перепропускать или выделять текст.

Я просмотрел несколько сайтов, включая stackoverflow, и наиболее распространенным предложением является добавление строки - fieldid.select(); Эта строка немедленно будет следовать линии фокусировки - fieldid.focus(); Добавление строки выбора не имело никакого эффекта. Поле действительно получает фокус, но курсор мигает в конце текста по умолчанию, и текст не выбран.

Вот фрагмент кода, который я использую ...

function windowLoad() 
{ 
    hideExtraFields(); 

    loadFormSettings(); 

    comboEventType.focus(); 

    var params = getUseCaseParams(); 
    if (params) 
    { 
     inputLocation.value = params.EventLocation; 
     comboEventType.value = "This is the default text"; 
     comboEventSubtype.value = "this is the default subtext"; 
    } 
    else 
    { 
     var unitData = getMyUnitData(); 
     inputLocation.value = unitData.Position.LocationString; 
     comboEventType.value = "This is the default text"; 
     comboEventSubtype.value = "this is the default subtext"; 
    } 
} 

ответ

0

Убедитесь, что вы вызываете выберите() после того, как вы уже установили свои значения по умолчанию.

function windowLoad() 
    { 
     hideExtraFields(); 

     loadFormSettings(); 

     var params = getUseCaseParams(); 
     if (params) 
     { 
      inputLocation.value = params.EventLocation; 
      comboEventType.value = "This is the default text"; 
      comboEventSubtype.value = "this is the default subtext"; 
     } 
     else 
     { 
      var unitData = getMyUnitData(); 
      inputLocation.value = unitData.Position.LocationString; 
      comboEventType.value = "This is the default text"; 
      comboEventSubtype.value = "this is the default subtext"; 
     } 

      comboEventType.focus(); 
      inputLocation.focus() 
      inputLocation.select() 
    } 

Порядок здесь. Обратите внимание, что это работает: http://jsfiddle.net/g1zmprmx/

Но это вовсе не так: http://jsfiddle.net/bspga4gb/

+0

Ваша логика имеет смысл. Однако это не сработало, когда я переместил comboEventType.focus(); и comboEventType.select(); ко дну. Поле по-прежнему фокусируется на загрузке формы, но текст не выбран. Мне было интересно, может ли это лучше обрабатываться в html-коде, а не в jscript. –

+0

Я также попытался помещать эти две строки кода в функцию loadFormSettings(); опять же, поле по-прежнему приобретает фокус, но не выбирает. –

+0

Можете ли вы показать больше кода? Является ли comboEventType текстовым вводом? Что-то происходит после windowLoad()? – bingo

Смежные вопросы