I'm trying to get a basic search function working on a list that gets displayed inside a modal.
When I type something in the input box, input.value
in the javascript function below is an empty string for some reason. As a result the javascript search/filter function doesn't do anything.
thanks for your help.
VB (generates HTML):
<WebMethod()>
Public Function GetIionsList(schedTypeUID As Integer) As String
Dim table As String = ""
Dim sql As String = ""
Dim inspListHTML As New StringBuilder
Dim dif As DataInterfaceFactory = GetSettingsDIF()
Dim UserInfo As New NAMEGenericCls.UserCls.NAMEUser
Dim userName As String = GetUserName(dif)
UserInfo.Initialise(userName, dif)
Dim SchedDataRight As New NAMEGenericCls.SecDataRights
SchedDataRight.LoadDataRights(dif, UserInfo.UID, UserInfo.GroupUID)
Select Case schedTypeUID
Case SchedType.PLANNED
table = "TABLE_ONE"
Case SchedType.ADHOC
table = "TABLE_TWO"
Case SchedType.EXISTING
table = "TABLE_THREE"
End Select
sql = SchedDataRight.CheckDataRights(dif, "SELECT I_UID FROM " & table)
inspListHTML.Append("<input type='text' id='textInput' onkeyup='IionSearch()' placeholder='Search..' title='Type in a word'>").AppendLine()
inspListHTML.Append("<br>").AppendLine()
inspListHTML.Append("<br>").AppendLine()
inspListHTML.Append("<ul id='ISelectListUL' class='list-group'>").AppendLine()
Using dr As New DataReader(dif)
dr.ExecuteReader(sql)
Dim PreviousIUID As String = ""
Dim CurrentIUID As String = ""
While dr.Read()
If Not IsDBNull(dr!I_UID) Then
CurrentIUID = dr!I_UID
If CurrentIUID <> PreviousIUID Then
PreviousIUID = CurrentIUID
Using drlkp As New DataReader(dif)
Dim qp As New List(Of Sqlclient.SqlParameter)
qp.Add(New SqlClient.SqlParameter("@CurrentIUID", CurrentIUID))
Dim lkp As String = SchedDataRight.CheckDataRights(dif, "SELECT I_NAME FROM TABLE_TWO WHERE I_UID = @CurrentIUID ")
drlkp.ExecuteReader(lkp, qp)
If Not IsDBNull(lkp) Then
getInspListHTML(inspListHTML, dr!I_UID, drlkp!I_NAME, schedTypeUID)
End If
End Using
End If
Else
getInspListHTML(inspListHTML, 999, "Error - No Iions Found", "")
End If
End While
End Using
inspListHTML.Append("</ul>").AppendLine()
Return inspListHTML.ToString()
End Function
Rendered HTML:
<input type='text' id='textInput' onkeyup='IionSearch()' placeholder='Search..' title='Type in a word'>
<br>
<br>
<ul id='ISelectListUL' class='list-group'>
<li><a id='li_InspID_117' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>1 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_118' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>x1 and 2 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_119' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_120' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>x2 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_121' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>x4 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_122' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xHigh Traffic - Safety Iion </a></li>
<li><a id='li_InspID_123' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xHigh & Med Traffic - Safety Iion </a></li>
<li><a id='li_InspID_124' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xMed Traffic - Safety Iion </a></li>
<li><a id='li_InspID_125' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xLow Traffic - Safety Iion </a></li>
<li><a id='li_InspID_126' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xPeriod Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_127' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xPeriod Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_128' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xPeriod Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_129' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>3 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_130' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>6 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_131' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>1 and 3 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_132' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>Adhoc </a></li>
</ul>
The rendered HTML is displayed using:
$('#IionList').html(inspListHTML);
JS:
function IionSearch() {
var input, filter, ul, li, a, i, txtValue;
input = document.getElementById("textInput");
filter = input.value.toUpperCase();
ul = document.getElementById("ISelectListUL");
li = ul.getElementsByTagName("li");
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
};
function IionSearch() {
var input, filter, ul, li, a, i, txtValue;
input = document.getElementById("textInput");
filter = input.value.toUpperCase();
ul = document.getElementById("ISelectListUL");
li = ul.getElementsByTagName("li");
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
};
<input type='text' id='textInput' onkeyup='IionSearch()' placeholder='Search..' title='Type in a word'>
<br>
<br>
<ul id='ISelectListUL' class='list-group'>
<li><a id='li_InspID_117' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>1 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_118' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>x1 and 2 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_119' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_120' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>x2 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_121' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>x4 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_122' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xHigh Traffic - Safety Iion </a></li>
<li><a id='li_InspID_123' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xHigh & Med Traffic - Safety Iion </a></li>
<li><a id='li_InspID_124' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xMed Traffic - Safety Iion </a></li>
<li><a id='li_InspID_125' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xLow Traffic - Safety Iion </a></li>
<li><a id='li_InspID_126' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xPeriod Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_127' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xPeriod Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_128' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>xPeriod Full Sector - Safety Iion </a></li>
<li><a id='li_InspID_129' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>3 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_130' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>6 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_131' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>1 and 3 Monthly - Safety Iion </a></li>
<li><a id='li_InspID_132' onclick="javascript:selectIion(this.id,'1');" class='list-group-item'>Adhoc </a></li>
</ul>