【问题标题】:Invoke a server side action upon the user pressing the Enter/Return key在用户按下 Enter/Return 键时调用服务器端操作
【发布时间】:2012-11-29 08:06:26
【问题描述】:

更新

由于我如此迅速地得到了您对这个问题的非常有用的答案,因此我重新考虑了这个问题。我认为我需要将其分解为两个小要求,因此我正在更新问题。

在我的 ASP.NET MVC 4 应用程序中,当用户在焦点位于特定文本框时按下键盘上的 Enter 键时,我需要这样做:

场景 1:必须调用适当的服务器端操作。如果用户在光标位于不同文本框时按下回车键,则必须调用另一个动作。

场景 2:如果用户在焦点位于当前页面上任一表单的 any 文本框中时按下了键盘上的 Enter 键,则必须使用将所有表单数据 (HttpPost) 发送到控制器上的操作,如该 <form> 的操作属性中指定的那样。

我如何完成这两个场景?

【问题讨论】:

  • 您想将任何值传递给被调用的操作吗?
  • 是的,基本上,我想回发到特定控制器上的特定操作。

标签: c# javascript jquery asp.net-mvc asp.net-mvc-4


【解决方案1】:
$('#idOfTextbox').keypress(function(e) {
    if(e.which == 13) {
        $.ajax({
        //.. Your values go here...
        });
    }
});

如果你想拦截一​​个提交的表单,你可以使用ajaxForm plugin。这样,您可以在页面上拥有多个表单,并且在提交表单时,它将对表单的 action 属性中指定的 action 方法进行 AJAX 调用。然后,您将能够在 ajax 调用的“成功”回调中处理响应。

【讨论】:

  • 谢谢。如何从这里调用控制器上的服务器端 MVC 操作?
  • $.ajax({ url: '/PathToYourActionMethod', 成功: function(data) { } });
  • 谢谢。如果我希望为所有文本框调用相同的操作,我假设我将用某个 CSS 类名或其他东西替换那个#idOfTextBox?
  • 是的。在示例中,我通过 id 引用文本框。要将它附加到多个文本框,您应该使用一个通用的类名。
  • 非常感谢您的帮助。我在某种程度上重新考虑了这个问题,并将其分解为两种情况。你已经回答了第一个场景。如果你能帮我做第二个,那对我有很大帮助。
【解决方案2】:
element.onkeydown = function(event) {
    //do something on keydown (enter is keyCode === 13)
};

【讨论】:

    【解决方案3】:

    您可以使用 javascript 或简单地将每个输入放在不同的 <form> 中,并在其中添加一个按钮 type="submit"。

    【讨论】:

    • 这很有趣。谢谢你。我从来没想过那个。 :-)
    【解决方案4】:

    你可以这样做:

    $('#idOfTextbox').keypress(function(e) {
        if(e.which == 13) {
           $.ajax({
    
           url: './savedata',//Your method name, that is to be called
           type: 'POST',
           contentType: 'application/json',//Type of data you want to post
           data: JSON.stringify({ obj: sampleobject }),//object of post-object i.e. data being posted
           success: function(result) {
           //Logic to handle success
            }  
           error: function(){}//Handle error here  
         }
    }); 
    

    我已经举了一个例子来调用一个方法,该方法在你当前正在使用的视图上的同一个控制器上..

    【讨论】:

    • 非常感谢您,Bhushan。
    • JSON.stringify 是 jQuery 方法还是服务器端 MVC 方法?
    • @WaterCoolerv2:..这是jquery方法...而且在jquery中使用的MVC中的任何方法都有@前缀...!!
    • 这就是我的怀疑。 jQuery 将如何识别我要发布的数据。我要发布的数据将具有来自我的模型/视图模型的服务器端表示。我不会有客户端对象。你是说我得先在客户端做一个对象,然后调用stringify来序列化它?
    • @WaterCoolerv2: stringify 方法中的 obj 应该是您将数据发布到的方法的参数...否则它不起作用...
    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2018-08-18
    • 1970-01-01
    相关资源
    最近更新 更多