2016-11-22 37 views
0

我現在面臨的問題是,在Html.TextBoxFor()中按下Enter鍵時,會自動觸發按鈕單擊事件。我有一個主要觀點。在這個視圖中有3個按鈕。在每個2按鈕上單擊一個局部視圖,在第三個按鈕單擊期間打開一個新視圖。請參閱下面的代碼:在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> 

我點擊按鈕1,並且第一部分視圖打開:

局部視圖有下面的代碼:

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

我的問題是,當我按「Enter 「鍵在此文本框內,正在執行主視圖中button1的代碼:

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

這會導致所有按鈕被隱藏,除非用戶重新加載視圖,否則視圖將變得無用。

我試圖處理文本框的onchange()事件並重定向到下面的函數,但它不處理。

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

即使我嘗試了相同的功能爲div - click()..它不起作用。 當我按下回車鍵時,正在使用此信息處理確切的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

儘量保持所有三個按鈕在不同的表單標籤,並提交按鈕。 因此,在這種情況下,無論何時您在表單輸入中按回車鍵,相應的按鈕都會被點擊。要防止整頁回發,請在按鈕單擊事件中使用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

我知道,但要獲得默認行爲,就像輸入一個文本框應該擊中適當的各個按鈕,您必須製作表單。然而,沒有必要提交它們,你在按鈕單擊時阻止它們提交。 –

相關問題