C# 使用ajax加载局部视图时,将触发提交按钮

C# 使用ajax加载局部视图时,将触发提交按钮,c#,ajax,asp.net-mvc,view,asp.net-mvc-partialview,C#,Ajax,Asp.net Mvc,View,Asp.net Mvc Partialview,当我使用ajax加载部分视图时,会触发submit按钮。 如果删除/删除“提交”按钮,则局部视图将正确渲染 这是我的javascript代码: $(".searchclientssendsms").keypress(function (event) { var keycode = (event.keycode ? event.keycode : event.which); if (keycode == '13') { //enter key var

当我使用ajax加载部分视图时,会触发submit按钮。 如果删除/删除“提交”按钮,则局部视图将正确渲染

这是我的javascript代码:

$(".searchclientssendsms").keypress(function (event) {

    var keycode = (event.keycode ? event.keycode : event.which);
    if (keycode == '13') { //enter key

             var value = $(this).val();

             $.get("/smstemplate/SearchClients/" + value,

             function (data) {             
                $('#searchClientsResult').html(data);               
             });

    }
});
RouteConfig中有关我的搜索的行:

routes.MapRoute(name: "SearchClientsSendSMS", 
                  url: "smstemplate/searchclients/{search}", 
             defaults: new { controller = "smstemplate",
                                 action = "searchclients" });
以及控制器的功能:

    public ActionResult SendSMS()
    {
        return View();
    }


    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult SendSMS(SMSTemplate sms, string[] clients)
    {

        foreach (string client in clients)
        {
            int idclient = Convert.ToInt32(client);
            Customer customer=db.Customers.Find(idclient);
           // SendSMS(customer.Phone, sms.Text);
        }

        return View();
    }


    public ActionResult SearchClients(string search)
    {
        List<Customer> clients = db.Customers.Where(c => c.Deleted == true && (c.Email.Contains(search) || c.Name.Contains(search) || c.Phone.Contains(search))).ToList();

        return PartialView(clients);
    }
我只在回车键时注意到这种行为


那么,是什么导致了这种情况呢?

在我看来,
Enter
键也在提交按钮,所以它在调用AJAX的同时按下按钮

试试这个:

$(".searchclientssendsms").keypress(function (event) {

var keycode = (event.keycode ? event.keycode : event.which);
    if (keycode == '13') { //enter key

         var value = $(this).val();

         $.get("/smstemplate/SearchClients/" + value,

         function (data) {             
            $('#searchClientsResult').html(data);               
         });

         event.preventDefault(); //Inside the if so only is prevented for Enter Key.

    }
});
要在所有页面中禁用它,您可以尝试以下操作:

$(document).ready(function() {
  $(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
   });
});

表单何时发布??在哪个特定事件中?现在我无法输入文本。我注意到,如果在该视图的任何输入中按enter键,则会触发submit按钮。@Otix这是enter键的默认操作,请提交表单。确保event.preventDefault()位于if块内,否则将阻止任何键被按下。看看我添加的代码。你的解决方案很有效!我将event.preventDefault()放在获取输入值的行之前。但我现在的问题是如何删除整个页面的此行为(回车键)。@Otix在答案中添加了如何删除整个页面的行为,应该可以。
$(document).ready(function() {
  $(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
   });
});