Как Я Могу Сделать Так, Чтобы В Строке Поиска JS НЕ Учитывался Регистр?

#javascript #c# #asp.net #asp.net-core-mvc #case-sensitive

Вопрос:

Поэтому я создал веб-сайт, на который вы можете загружать, скачивать, удалять и просматривать файлы. У меня также есть функция java-скрипта, которая позволяет пользователю выполнять поиск по файлам. Единственное, что важно, это то, что поиск чувствителен к регистру. Может ли кто-нибудь помочь мне с примером кода о том, как я должен изменить свой сценарий, чтобы он больше не учитывал регистр? Я очень новичок в ASP.NET и все еще пытаюсь собраться с мыслями.

Вот страница индекса:

 @model IEnumerable<Proiect2PracticaClona.Models.Files>

<center>
    <h1>Daca nici acu nu merge ... ma sinucid</h1>
    <h2>Sa moara mama</h2>
    <hr />
    @if (User.IsInRole("Admin"))

    {
        <form methord="post" enctype="multipart/form-data" asp-controller="Home" asp-action="Index">
            <input type="file" name="fifile" />
            @Html.RadioButton("category", "incepator")
            @Html.RadioButton("category", "intermediar")
            @Html.RadioButton("category", "admin")
            <input type="submit" value="Upload" />



            <hr />
        </form>}
    <div>
        File Name:<input id="search"  onkeyup="search()" placeholder="cauta"/>

    </div>

    <table class="table">
        @if (User.IsInRole("User"))
        {
            <nav class="navbar navbar-expand-lg navbar-light bg-light">
                <a class="navbar-brand" href="#">Navbar</a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav mr-auto">
                        <li class="nav-item active">
                            <a class="nav-link">Incepatori <span class="sr-only">(current)</span></a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link">Avansati</a>
                        </li>
                        <li class="nav-item dropdown">

                        </li>
                        <li class="nav-item">
                            <a class="nav-link disabled">Admini</a>
                        </li>
                    </ul>
                    <form class="form-inline my-2 my-lg-0">
                        <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
                    </form>
                </div>
            </nav>
        }
        <tr>
            <th>File Name</th>

        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.info</td>
                <td><a href="@Url.Action("Download","Home",new { filename=item.info })">Download</a></td>
                @if (User.IsInRole("Admin"))
                {
                    <td><a href="@Url.Action("Delete", "Home", new { filedel = item.info })">Delete</a></td>
                }
                <td><a href="/Home/DocumentViewer/@item.info">Viewer</a></td>

            </tr>
        }
    </table>
    @section scripts
{
        <script>
            function search() {
                $("tr").each(function (index, value) {
                    if (index > 0 amp;amp; !$(this).find("td")[0].innerText.includes($("#search").val())) {
                        $(this).attr("hidden", true);
                    } else {
                        $(this).removeAttr("hidden");
                    }
                    console.log(value);
                })
            }
        </script>
    }
</center>
 

Ответ №1:

Почему бы не преобразовать обе стороны в нижний регистр при проверке. В этом случае не имеет значения, каков корпус элемента в блоке td и каков случай текста, вставленного пользователем. Мы часто используем это в нашем приложении для сравнения.

 function search() {
                $("tr").each(function (index, value) {
                    if (index > 0 amp;amp; !$(this).find("td")[0].innerText.toLowerCase().includes($("#search").val().toLowerCase())) {
                        $(this).attr("hidden", true);
                    } else {
                        $(this).removeAttr("hidden");
                    }
                    console.log(value);
                })
            }
 

Комментарии:

1. Большое вам спасибо, работает безупречно, люблю вас

Ответ №2:

Чувствительность к регистру может быть снижена путем преобразования значения с обеих сторон запроса в нижний или верхний регистр (в соответствии с вашими предпочтениями.

Поэтому ваша логика поиска должна измениться с

 if (index > 0 amp;amp; !$(this).find("td")[0].innerText.includes($("#search").val())) {
 

К этому:

 if (index > 0 amp;amp; !$(this).find("td")[0].innerText.toLowerCase().includes($("search").val().toLowerCase())) {
 

Комментарии:

1. Большое спасибо