开发者问题收集

发布并清除过滤器 -Razor 页面

2020-07-16
679

我需要在搜索后清除过滤器 这是我的 index.cshtml

<form method="post" id="form">
    <div class="row">
        <div class="col-md-2">
            <div class="form-group">
                <input type="search" name="searchNom" value="@ViewData["sNom"]?.ToString()" class="form-control" id="nom" />
            </div>
        </div>
        <div class="col-md-2">
            <div class="form-group">
                <input type="search" name="searchPrenom" value="@ViewData["sPrenom"]?.ToString()" id="prenom" />
            </div>
        </div>
        <div class="col-md-2">
            <div class="form-group">
                <input type="search" name="searchEmail" value="@ViewData["sEmail"]?.ToString()" id="email" />
            </div>
        </div>
        <div class="col-md-2">
            <div class="form-group">
                <input type="search" name="searchTelephone" value="@ViewData["sTelephone"]?.ToString()" id="telephone" />
            </div>
        </div>
        <div class="col-md-2">
            <p>
                <input type="submit" value="Search" class="btn btn-primary" />
                <button class="btn" type="reset" id="reset" onclick="Reset()"><i class="fa fa-trash"></i></button>
            </p>
        </div>
    </div>
</form>

然后是 操作索引:

   public string searchNom { get; set; }
        public string searchPrenom { get; set; }
        public string searchEmail { get; set; }
        public string searchTelephone { get; set; }
        public async Task<IActionResult> Index(string searchNom, string searchPrenom, string searchEmail, string searchTelephone, int? pageNumber, string currentFilter)
        {
            
            if (searchNom != null || searchPrenom != null || searchEmail != null || searchTelephone != null)
            {
                pageNumber = 1;

            }
            

            var personnels = from s in _context.personnels
                             select s;
            if (!String.IsNullOrEmpty(searchNom) || !String.IsNullOrEmpty(searchPrenom) || !String.IsNullOrEmpty(searchEmail) || !String.IsNullOrEmpty(searchTelephone))
            {
                personnels = personnels.Where(s => s.Nom.Equals(searchNom) || s.Prenom.Equals(searchPrenom) || s.Email.Equals(searchEmail) || s.Telephone.Equals(searchTelephone));
                ViewData["sNom"] = searchNom ;
                ViewData["sPrenom"] = searchPrenom;
                ViewData["sEmail"] = searchEmail;
                ViewData["sTelephone"] =searchTelephone ;
                
            }

            else
            {
                ViewData["sNom"] = "";
                ViewData["sPrenom"] = "";
                ViewData["sEmail"] = "";
                ViewData["sTelephone"] = "";
            }
          
            
                int pageSize = 20;
            return View(await Pagination<PersonnelModel>.CreateAsync(personnels.AsNoTracking(), pageNumber ?? 1, pageSize));


        }

js代码:

<script>
    function Reset() {
        document.getElementById("nom").value = "";
        document.getElementById("prenom").value = "";
        document.getElementById("email").value = "";
        document.getElementById("telephone").value = "";


    }</script>

现在的问题是,按钮重置不起作用,出现异常 Uncaught TypeError:无法将属性“selectedIndex”设置为 null 在 Reset ((index):357) 在 HTMLButtonElement.onclick ((index):107)

有什么方法可以让“重置”按钮同时对表单数据值起作用吗?

非常感谢您的任何帮助。

2个回答

欢迎来到 SO。

由于我们没有 _context 变量,也没有 PersonelModel 类,因此无法执行上述代码。

您使用 ViewData 最初填充表单的方式似乎有点可疑 - 我会确保传递视图模型。我很感激这不是这里的问题。

回答实际问题,我首先用

document.addEventListener("DOMContentLoaded", function(){
  // Handler when the DOM is fully loaded
});

包装脚本函数,或者看看 这里

不要依赖 onclick 属性,而是看看 jQuery 库中的 .click() 函数,看看 这里

使用上述代码,您的代码将如下所示:

$("#submit-button").click(function() {
    document.getElementById("nom").value = "";
    document.getElementById("prenom").value = "";
    document.getElementById("email").value = "";
    document.getElementById("telephone").value = "";
});

假设您添加了提交按钮 ID 到您的按钮。

Duck Ling
2020-07-16

我终于找到了解决方案,我还添加了此 document.forms["form"].submit();

   <script>
        function Reset() {

            document.getElementById("nom").value = "";
            document.getElementById("prenom").value = "";
            document.getElementById("email").value = "";
            document.getElementById("telephone").value = "";
            document.forms["form"].submit();

        }</script>
amal51
2020-07-16