纸张对话框中的自动对焦纸张输入只能工作一次?
autofocus paper-input in a paper-dialog works only once?
<paper-dialog>
<h2>Rename</h2>
<div>
<paper-input autofocus></paper-input>
</div>
<div class="buttons">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button dialog-confirm on-click="_confirm">Rename</paper-button>
</div>
</paper-dialog>
此纸张对话框仅在您第一次打开时触发其纸张输入的自动对焦。
如何做到每次打开对话框都触发焦点?
为了修复对话框的自动对焦,我不得不使用事件侦听器并手动对焦元素。
例如:
window.addEventListener('iron-overlay-opened', function(event) {
// Grab the autofocus input
var input = event.target.querySelector('[autofocus]');
// Switch it because some require special treatment
switch(input.tagName.toLowerCase()) {
case 'input':
input.focus();
break;
case 'paper-textarea':
case 'paper-input':
input.$.input.focus();
break;
}
});
如果你有打开对话框的触发函数,你也可以使用这样的代码:
this.$.__myDialog__.open();
this.async(function() {
this.$.__myDialog__.querySelector('[autofocus] input').focus();
});
<paper-dialog>
<h2>Rename</h2>
<div>
<paper-input autofocus></paper-input>
</div>
<div class="buttons">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button dialog-confirm on-click="_confirm">Rename</paper-button>
</div>
</paper-dialog>
此纸张对话框仅在您第一次打开时触发其纸张输入的自动对焦。
如何做到每次打开对话框都触发焦点?
为了修复对话框的自动对焦,我不得不使用事件侦听器并手动对焦元素。
例如:
window.addEventListener('iron-overlay-opened', function(event) {
// Grab the autofocus input
var input = event.target.querySelector('[autofocus]');
// Switch it because some require special treatment
switch(input.tagName.toLowerCase()) {
case 'input':
input.focus();
break;
case 'paper-textarea':
case 'paper-input':
input.$.input.focus();
break;
}
});
如果你有打开对话框的触发函数,你也可以使用这样的代码:
this.$.__myDialog__.open();
this.async(function() {
this.$.__myDialog__.querySelector('[autofocus] input').focus();
});