如何在 html 文本搜索中忽略简码
How to ignore shortcode on html text search
我正在寻找特定问题的解决方案:
我正在尝试使用带有搜索选项的 w3schools 下拉菜单以及国家标志简码的组合,我需要搜索功能忽略简码而只查找国家名称。
有人可以提供解决方案吗?
提前致谢。
我将 link 附加到基本的 w3schools html 代码和一些截图以获得更好的解释:
我的代码
WordPress 短代码是在运行时解析的,因此您实际上需要担心这些短代码的 output 是什么。可能类似于 <img src="/path/to/flags/flag-1.png" />
由于您清楚地控制了下拉列表中的 HTML 标记,我只是将国家/地区包装在一个范围内,然后使用 JavaScript 来定位它。以下面的片段为例:
您会注意到它不再关心锚点内的任何其他内容,而只关心锚点 span
.
内的文本
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}
function filterFunction() {
var input, filter, ul, li, a, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
div = document.getElementById("myDropdown");
a = div.getElementsByTagName("a");
for (i = 0; i < a.length; i++) {
var label = a[i].querySelector('span');
if (label.innerText.toUpperCase().indexOf(filter) > -1) {
a[i].style.display = "";
} else {
a[i].style.display = "none";
}
}
}
.dropbtn{background-color:#4CAF50;color:#fff;padding:16px;font-size:16px;border:none;cursor:pointer}.dropbtn:focus,.dropbtn:hover{background-color:#3e8e41}#myInput{border-box:box-sizing;background-image:url(searchicon.png);background-position:14px 12px;background-repeat:no-repeat;font-size:16px;padding:14px 20px 12px 45px;border:none;border-bottom:1px solid #ddd}#myInput:focus{outline:#ddd solid 3px}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;background-color:#f6f6f6;min-width:230px;overflow:auto;border:1px solid #ddd;z-index:1}.dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown a:hover{background-color:#ddd}.show{display:block}
<h2>Search/Filter Dropdown</h2>
<p>Click on the button to open the dropdown menu, and use the input field to search for a specific dropdown link.</p>
<div class="dropdown">
<button onclick="myFunction()" class="dropbtn">Dropdown</button>
<div id="myDropdown" class="dropdown-content">
<input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
<a href="#about"><i class="flag a"></i><span>About</span></a>
<a href="#base"><i class="flag b"></i><span>Base</span></a>
<a href="#blog"><i class="flag b"></i><span>Blog</span></a>
<a href="#contact"><i class="flag c"></i><span>Contact</span></a>
<a href="#custom"><i class="flag c"></i><span>Custom</span></a>
<a href="#support"><i class="flag s"></i><span>Support</span></a>
<a href="#tools"><i class="flag t"></i><span>Tools</span></a>
</div>
</div>
我正在寻找特定问题的解决方案:
我正在尝试使用带有搜索选项的 w3schools 下拉菜单以及国家标志简码的组合,我需要搜索功能忽略简码而只查找国家名称。 有人可以提供解决方案吗?
提前致谢。
我将 link 附加到基本的 w3schools html 代码和一些截图以获得更好的解释:
我的代码
WordPress 短代码是在运行时解析的,因此您实际上需要担心这些短代码的 output 是什么。可能类似于 <img src="/path/to/flags/flag-1.png" />
由于您清楚地控制了下拉列表中的 HTML 标记,我只是将国家/地区包装在一个范围内,然后使用 JavaScript 来定位它。以下面的片段为例:
您会注意到它不再关心锚点内的任何其他内容,而只关心锚点 span
.
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}
function filterFunction() {
var input, filter, ul, li, a, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
div = document.getElementById("myDropdown");
a = div.getElementsByTagName("a");
for (i = 0; i < a.length; i++) {
var label = a[i].querySelector('span');
if (label.innerText.toUpperCase().indexOf(filter) > -1) {
a[i].style.display = "";
} else {
a[i].style.display = "none";
}
}
}
.dropbtn{background-color:#4CAF50;color:#fff;padding:16px;font-size:16px;border:none;cursor:pointer}.dropbtn:focus,.dropbtn:hover{background-color:#3e8e41}#myInput{border-box:box-sizing;background-image:url(searchicon.png);background-position:14px 12px;background-repeat:no-repeat;font-size:16px;padding:14px 20px 12px 45px;border:none;border-bottom:1px solid #ddd}#myInput:focus{outline:#ddd solid 3px}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;background-color:#f6f6f6;min-width:230px;overflow:auto;border:1px solid #ddd;z-index:1}.dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block}.dropdown a:hover{background-color:#ddd}.show{display:block}
<h2>Search/Filter Dropdown</h2>
<p>Click on the button to open the dropdown menu, and use the input field to search for a specific dropdown link.</p>
<div class="dropdown">
<button onclick="myFunction()" class="dropbtn">Dropdown</button>
<div id="myDropdown" class="dropdown-content">
<input type="text" placeholder="Search.." id="myInput" onkeyup="filterFunction()">
<a href="#about"><i class="flag a"></i><span>About</span></a>
<a href="#base"><i class="flag b"></i><span>Base</span></a>
<a href="#blog"><i class="flag b"></i><span>Blog</span></a>
<a href="#contact"><i class="flag c"></i><span>Contact</span></a>
<a href="#custom"><i class="flag c"></i><span>Custom</span></a>
<a href="#support"><i class="flag s"></i><span>Support</span></a>
<a href="#tools"><i class="flag t"></i><span>Tools</span></a>
</div>
</div>