activeElement 不检测 p-editor - Angular

activeElement doesn't detect p-editor - Angular

提问人:Peppino 提问时间:10/27/2023 更新时间:10/27/2023 访问量:23

问:

HTML

                            <p-editor #editor *ngSwitchCase="1" #textInput="ngModel" [(ngModel)]="placeholder.value" (onTextChange)="handleInputChange($event)"
                                id="placeholder{{i}}" name="placeholder{{i}}" [placeholder]="l('AddText')" required
                                [style]="{height:'180px', 'width': '100%'}" formats>
                                <p-header>
                                    <span class="ql-formats">
                                        <button class="ql-bold" aria-label="Bold"></button>
                                        <button class="ql-italic" aria-label="Italic"></button>
                                        <button class="ql-underline" aria-label="Underline"></button>
                                        <button class="ql-strike" aria-label="Strike"></button>
                                    </span>
                                    <span class="ql-formats">
                                        <button class="ql-list" value="ordered"></button>
                                        <button class="ql-list" value="bullet"></button>
                                    </span>
                                    <span class="ql-formats">
                                        <select class="ql-font">
                                            <option value="calibri">Calibri</option>
                                            <option value="microsoftsansserif">Sans Serif</option>
                                            <option value="inconsolata">Inconsolata</option>
                                            <option value="mirza">Mirza</option>
                                            <option value="arial">Arial</option>
                                        </select>
                                    </span>
                                    <span class="ql-formats">
                                        <select class="ql-size">
                                            <option value="8pt">8pt</option>
                                            <option value="9pt">9pt</option>
                                            <option value="10pt">10pt</option>
                                            <option value="11pt">11pt</option>
                                            <!-- <option value="12pt">12pt</option> -->
                                            <option value="12.5pt">12.5pt</option> <!--12pt non viene rilevato da Word, funzionano tutti i numeri tranne questo.-->
                                            <option value="13pt">13pt</option>
                                            <option value="14pt">14pt</option>
                                        </select>
                                    </span>
                                    <span class="ql-formats">
                                        <select title="Text Color" class="ql-color" defaultValue="rgb(0, 0, 0)">
                                            <option value="#000000" label="#000000"></option>
                                            <option value="#e60000" label="#e60000"></option>
                                            <option value="#ff9900" label="#ff9900"></option>
                                            <option value="#ffff00" label="#ffff00"></option>
                                            <option value="#008a00" label="#008a00"></option>
                                            <option value="#0066cc" label="#0066cc"></option>
                                            <option value="#ffffff" label="#ffffff"></option>
                                            <option value="#facccc" label="#facccc"></option>
                                            <option value="#ffebcc" label="#ffebcc"></option>
                                            <option value="#ffffcc" label="#ffffcc"></option>
                                            <option value="#cce8cc" label="#cce8cc"></option>
                                            <option value="#cce0f5" label="#cce0f5"></option>
                                            <option value="#bbbbbb" label="#bbbbbb"></option>
                                            <option value="#f06666" label="#f06666"></option>
                                            <option value="#ffc266" label="#ffc266"></option>
                                            <option value="#ffff66" label="#ffff66"></option>
                                            <option value="#66b966" label="#66b966"></option>
                                            <option value="#66a3e0" label="#66a3e0"></option>
                                        </select>
                                        <select title="Background Color" class="ql-background"
                                            defaultValue="rgb(255, 255, 255)">
                                            <option value="#000000" label="#000000"></option>
                                            <option value="#e60000" label="#e60000"></option>
                                            <option value="#ff9900" label="#ff9900"></option>
                                            <option value="#ffff00" label="#ffff00"></option>
                                            <option value="#008a00" label="#008a00"></option>
                                            <option value="#0066cc" label="#0066cc"></option>
                                            <option value="#ffffff" label="#ffffff"></option>
                                            <option value="#facccc" label="#facccc"></option>
                                            <option value="#ffebcc" label="#ffebcc"></option>
                                            <option value="#ffffcc" label="#ffffcc"></option>
                                            <option value="#cce8cc" label="#cce8cc"></option>
                                            <option value="#cce0f5" label="#cce0f5"></option>
                                            <option value="#bbbbbb" label="#bbbbbb"></option>
                                            <option value="#f06666" label="#f06666"></option>
                                            <option value="#ffc266" label="#ffc266"></option>
                                            <option value="#ffff66" label="#ffff66"></option>
                                            <option value="#66b966" label="#66b966"></option>
                                            <option value="#66a3e0" label="#66a3e0"></option>
                                        </select>
                                    </span>
                                </p-header>
                            </p-editor>

`Typescript`


 this.focusableElements = Array.from(
                document.querySelectorAll("input[id^='placeholder']:not([disabled]), select[id^='placeholder']:not([disabled]), p-editor[id^='placeholder']:not([disabled]), input.p-element:not([disabled])")
            ) as HTMLElement[];
            let focusedIndex = this.focusableElements.findIndex((element) => element === document.activeElement);

在我必须选择所有 ,就像这样,例如: 'input#placeholder1,它们没有被禁用。querySelectorAll inputselect p-editor

我需要我选择的元素的索引。它适用于除 focusedIndex 返回 -1 之外的所有标签。p-editor

将不胜感激。

focusedIndex == this.focusableElements.findIndex((element) => element.tagName.toLowerCase() === "p-editor" && element.getAttribute("id") === "placeholder");

我也尝试了这串代码,但什么都没有:focuesIndex 总是返回-1

JavaScript HTML Angular TypeScript DOM

评论

0赞 somethinghere 10/27/2023
从你的代码来看,永远不会起作用,对吧?因为它在模板中有一个索引?另外,这是什么?element.getAttribute("id") === 'placeholder'focusableElements
0赞 Peppino 10/27/2023
是的,没错。我尝试了我能想到的每一个想法@somethinghere

答: 暂无答案