2017-01-25 5 views
0

MVCビューのモーダルで、コントローラにポストするJavaスクリプトを呼び出すボタンがあります。ボタンでEnterキーを押すと、どのようにボタンがトリガーされますか。 ビューでJavaScript関数を呼び出せる場所がわかりません。Jqueryを使わずにMVCビューのページでEnterキーを押したときのボタントリガー

Jqueryを使用しないでください。私はこの目的のためにJavascriptを使用する必要があります。

は、これは私のビューです:

@using (Html.BeginForm("forgotPassword", "Home", FormMethod.Post)) 
     { 
      @Html.AntiForgeryToken() 
      <div> 
       <div>Email Address</div> 
       <div><input type="email" name="email" placeholder="[email protected]" id="email" class="forgot-password-textbox"></div> 
       <div><label id="Message" class="forgot-password-error-message"></label></div> 
       <div><input type="button" value="Submit" id="btn-reset-password" onclick="resetPasswordHandler()" class="orange-button forgot-password-button"></div> 
      </div> 
     } 

、これはJsと方法である:

function resetPasswordHandler() { 
    //Post Data to Controller 
}; 
+0

「私はJavascriptを使用しています」とはどういう意味ですか?あなたはすでにjQuery Ajaxを使用しています。この目的のために私は – Win

+0

@ウィン、私はJavaスクリプトを使用することができます。 – Alma

+0

jQueryが既に存在する場合は、それを使用します。あなたは、バニラJavaScriptをすべての目的に使用するか、すべての目的でjQueryを使用します。 –

答えて

2

Enterキーが押されたときにあなたがresetPasswordHandler関数を呼び出すことができます。

document.onkeydown = function() { 
    if (window.event.keyCode == '13') { 
     resetPasswordHandler(); 
    } 
} 
+0

これは、技術的にはフォームをフォーカスすることなくグローバルに動作する唯一のものです。しかし、 'document'のようなイベントハンドラは非常に非効率的であることに注意してください。 –

0
  1. は(ボタンの代わりにonclick)フォームにonsubmit機能を使用し
  2. type='submit'
にあなたのボタンを変更し、フォームの送信を防ぐために関数からfalseを返します
@using (Html.BeginForm("forgotPassword", "Home", FormMethod.Post, new { onsubmit = "return resetPasswordHandler()" })) 
     { 
      @Html.AntiForgeryToken() 
      <div> 
       <div>Email Address</div> 
       <div><input type="email" name="email" placeholder="[email protected]" id="email" class="forgot-password-textbox"></div> 
       <div><label id="Message" class="forgot-password-error-message"></label></div> 
       <div><input type="submit" value="Submit" id="btn-reset-password" class="orange-button forgot-password-button"></div> 
      </div> 
     } 

function resetPasswordHandler() { 
    var postResult = null; 
    var data = { 
     Email: document.getElementById('email').value 
    }; 
    var path = "/forgotPassword"; 

    var errorMessage = document.getElementById('Message'); 

    $.ajax({ 
     dataType: "text", 
     url: path, 
     data: data, 

     type: "POST", 
     cache: false, 
     success: function (result) { 
      postResult = $.parseJSON(result); 
      if (postResult.status == "success") { 
       $('#forgot').hide(); 
       $('#forgot-thank-you').show(); 
      } 
      else { 
       errorMessage.innerHTML = postResult.message; 
      } 
     }, 
     error: function() { 
      errorMessage.innerHTML = "An error occured"; 
     } 
    }); 
    return false; 
}; 
+1

コードを追加しましたが、Enterキーを押しても何もしません。 – Alma

+1

多分あなたは何かを明確にすることができます - あなたは "no jQuery"と言っていますが、あなたのコードではあなたの試み($ .ajax)でjQueryを使用しています。 jQueryを使用せずにajaxデータを送信する方法も探していますか?それはちょっと混乱します。 –

+0

最初にフォームにフォーカスを当てる必要があります。つまり、フォーム内の一部のフィールドやコントロールにフォーカスが必要です。 –

関連する問題