search the menu using input box (#1317)
* working version * change onchange to oninput with minimum of three chars * working version with delay and fix for category click
This commit is contained in:
parent
4d48bd3d4c
commit
005b9f03a4
@ -54,6 +54,7 @@ sign.in=Sign in
|
|||||||
register.new=or register yourself as a new user
|
register.new=or register yourself as a new user
|
||||||
sign.up=Sign up
|
sign.up=Sign up
|
||||||
register.title=Register
|
register.title=Register
|
||||||
|
searchmenu=Search lesson
|
||||||
|
|
||||||
|
|
||||||
not.empty=This field is required.
|
not.empty=This field is required.
|
||||||
|
45
src/main/resources/webgoat/static/js/search.js
Normal file
45
src/main/resources/webgoat/static/js/search.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
let input = document.getElementById('search');
|
||||||
|
let timeout = null;
|
||||||
|
|
||||||
|
input.addEventListener('keyup', function (e) {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(function () {
|
||||||
|
//console.log('Value:', input.value);
|
||||||
|
search(input.value);
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
|
||||||
|
function search(arg) {
|
||||||
|
var elementId = null;
|
||||||
|
lessons = document.querySelectorAll('[class="lesson"]');
|
||||||
|
lessons.forEach(function(lesson) {
|
||||||
|
lessonLowerCase = lesson.textContent.toLowerCase();
|
||||||
|
if (arg.length>2 && lessonLowerCase.includes(arg.toLowerCase())) {
|
||||||
|
if (arg.length<7 && arg.toLowerCase().includes('sql')) {
|
||||||
|
elementId = 'A3Injection-SQLInjectionintro';
|
||||||
|
document.getElementById('search').value='sql injection';
|
||||||
|
} else if (arg.length<9 && arg.toLowerCase().includes('pass')) {
|
||||||
|
elementId = 'A7IdentityAuthFailure-Passwordreset';
|
||||||
|
document.getElementById('search').value='password';
|
||||||
|
} else {
|
||||||
|
elementId = lesson.childNodes[0].id;
|
||||||
|
document.getElementById('search').value=lessonLowerCase;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (elementId != null) {
|
||||||
|
document.getElementById(elementId).click();
|
||||||
|
categoryId = elementId.substring(0,elementId.indexOf("-"));
|
||||||
|
//extra click to make sure menu does not disappear on same category search
|
||||||
|
if (categoryId == 'Challenges') {
|
||||||
|
document.querySelectorAll('[category="Introduction"]')[0].click();
|
||||||
|
} else {
|
||||||
|
document.querySelectorAll('[category="Challenges"]')[0].click();
|
||||||
|
}
|
||||||
|
document.querySelectorAll('[category="'+categoryId+'"]')[0].click();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
@ -151,6 +151,8 @@
|
|||||||
</button>
|
</button>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<input class="form-control" type="text" id="search" name="search" th:placeholder="#{searchmenu}" style="width:60%" />
|
||||||
|
<script src="js/search.js" ></script>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user