2015-06-19 3 views
1

В Polymer (1.0), как я могу установить фокус ввода железа, когда выбран (в качестве примера) радиоблок «radio1».Задайте фокус для ввода бумаги с помощью радиокнопки

<div> 
    <div>Title:</div> 
    <paper-radio-group> 
    <paper-radio-button name="radio1">Radio1Label</paper-radio-button> 
    <paper-radio-button name="radio2">Radio2Label</paper-radio-button> 
    </paper-radio-group> 
    <paper-input-container> 
    <input is="iron-input"> 
    </paper-input-container> 
</div> 

ответ

1

Вам нужно будет связать щелчок event к radio1:

<paper-radio-button name="radio1" on-click="_setInputFocus">Radio1Label</paper-radio-button> 

Затем определим функцию _setInputFocus так, чтобы она selects the input и устанавливает focus к нему:

<script> 
    Polymer({ 
     is: 'the-name-of-your-element', 
     _setInputFocus: function() { 
      this.$$("input").focus(); 
     } 
    }); 
</script> 

EDIT : Теперь мы хотим, чтобы вход отключен, пока пользователь не выберет s переключатель. Таким образом, мы даем iron-input в disabled атрибут:

<paper-input-container> 
    <input is="iron-input" disabled> 
</paper-input-container> 

Тогда мы изменить нашу функцию JavaScript, чтобы мы удалить атрибут disabled и устанавливает фокус ввода:

<script> 
    Polymer({ 
     is: "focus-test", 
     _setInputFocus: function() { 
      var inputElement = this.$$("input"); // grab the element 
      inputElement.toggleAttribute("disabled", false); // remove the disabled attribute 
      inputElement.focus(); // set the focus to this input 
     } 
    }); 
</script> 
+0

Спасибо, сделал трюк очень хорошо :). Были ли выбраны какие-либо изменения для отключения поля перед радиобуйкой? Так, чтобы пользователь не мог выбрать поле до того, как сначала будет выбрана радиобарабана. –

+0

Я отредактировал свой ответ, чтобы вход был отключен, пока пользователь не нажмет на переключатель. –

+0

Спасибо, отлично поработал! –

0

Вы можете также использовать <paper-input> вместо <paper-input-container>, а затем использовать

setTimeout(function() { 
     this.$.tabname.inputElement.focus() 
    }.bind(this), 200); 

в вашей функции. (Установленный тайм-аут иногда необходим, потому что, если другой элемент имеет фокус и собирается закрыть (например, выпадающее меню), вам придется подождать, пока это закончится, прежде чем давать фокус на вход)