2016-11-22 32 views
0

私が直面している問題は、Html.TextBoxFor()でキーを押したときにボタンのクリックイベントが自動的に発生することです。私はメインビューを持っています。このビューには3つのボタンがあります。 2つのボタンをクリックするたびに部分ビューが開き、3番目のボタンをクリックすると新しいビューが開きます。私はButton1をクリックし、最初の部分図が開かれたTextBoxFor Enterキーの押下中にボタンのクリックイベントが自動的に発生する

<script> 
    $(document).ready(function() { 
     SetUpDatePickers(); 
    }); 

    $('#button1').click(function (event) { 
     $('#divdefinetraj').toggle(); 
     $('#button1').hide(); 
     $('#button2').hide(); 
     $('#button3').hide(); 
     event.preventDefault(); 
     GetTrajectories(); 
    }); 

    $('#button2').click(function (event) { 
     $('#divRequestTT').toggle(); 
     $('#button1').hide(); 
     $('#button2').hide(); 
     $('#button3').hide(); 
     event.preventDefault(); 
    }); 

    $('#button3').click(function (event) { 
     window.location.href = '/UserManagement/UsersList/'; 
     event.preventDefault(); 
    });  
</script> 

部分図は、コードの下にあります。私は押したとき

@Html.TextBoxFor(u => u.TrajName, new { @class = "txtboxclass", @id = "TrajName" }) 

私の問題がある「と入力し、以下のコードを参照してください。このテキストボックス内のキーを押すと、メインビューのbutton1のコードが実行されています。

$('#button1').click(function (event) { 
    $('#divdefinetraj').toggle(); 
    $('#button1').hide(); 
    $('#button2').hide(); 
    $('#button3').hide(); 
    event.preventDefault(); 
    GetTrajectories(); 
}); 

この結果、すべてのボタンが非表示になり、ユーザーがビューを強制的にリロードしない限り、ビューは無意味になります。

textboxforのonchange()イベントを処理しようとしましたが、以下の機能にリダイレクトされましたが、処理されません。

function EnterKeyFilter() { 
    if (window.event.keyCode == 13) { 
     event.returnValue = false; 
     event.cancel = true; 
    } 
} 

私はdiv-click()と同じ機能を試しましたが、動作しません。 Enterキーを押すと、正確なbutton1クリックがこの情報event = j…y.Event {originalEvent: MouseEvent, type: "click", timeStamp: 7055.025000000001, jQuery110208686809991100928: true, toElement: button#button1で処理されています。

でも、私はそれをクリックしていません。部分図はフォームの一部でもなく、フォーム提出は問題ではありません。私はASP.NET MVCが新しく、この奇妙な動作と混同しています。助けてください。前もって感謝します。

+0

をあなたはいくつかにフォーカスを設定しようとすることができ何もしない隠しコントロール。 – Tatranskymedved

+0

誰かがキーボードで入力を押したときに何も起こらないようにしたいですか? –

+0

@WillyDavidJr:はい。まったく。 – ViVi

答えて

0

あなたのプレスを無効にしたい場合は、キーボードで入力し、この試してみてください。

$(function() { 

//On your document ready function, add this: 
     $('html').bind('keypress', function (e) { 
      if (e.keyCode == 13) { 
       return false; 
      } 
     }); 
} 
+0

ありがとうございます。これはトリックでした。 – ViVi

0

3つのボタンをすべて別のフォームタグにして、送信ボタンにしてください。 この場合、フォーム入力でEnterキーを押すと、それぞれのボタンがクリックされます。全面ポストバックを防ぐには、ボタンクリックイベントでe.preventDefault()を使用します。

HTML:

<form id="frm1"> 
    ------------- 
    ------------- 
<input id="btnSubmit" type="submit" value="submit" /> 
</form> 

jQueryの

$("#btnSubmit").click(function(e){ 
    e.preventDefault(); 
    -- rest of code 
}); 
+0

私の質問で言及したように、ここではフォームの提出は起こっていません。 – ViVi

+0

私は知っているが、テキストボックスを入力するのが適切なボタンを押すようなデフォルトの動作を得るためには、フォームを作成する必要があります。しかし、それらを提出する必要はありません、あなたはボタンのクリックでそれらの提出を防止しています。 –

関連する問題