Кнопка Click событие срабатывает при нажатии клавиши Enter в разных входных данных (без форм)



эта логика срабатывает при нажатии "Enter" на входе "количество", и я не считаю, что это должно (это не в Chrome). Как я могу предотвратить это, и если не предотвратить это в IE, обработайте его так, чтобы логика в событии click не срабатывала.



<html>
<body>
<div id="page">
<div id="financed_amount">
<h1>Financed Amount:</h1>
<input type="text" id="amount" value="" />
</div>
<h1>Finance Options</h1>
<div>
<a id="shareLink" rel="leanModal" name="email" href="#email"></a>
<button id="btnShare" class="share">Share this report</button>
</div>
</div>
</body>
</html>


скрипт



$("#btnShare").click(function (e) {
// This logic is firing when pressing "Enter" in the "Amount" input
});



  • Jquery: 1.7.2

  • IE 9

  • (работает в Chrome)

722   5  

5 ответов:

у меня была такая же проблема, и решена она путем добавления до <button> элемент, с помощью которого IE считает кнопку простой кнопкой вместо кнопки отправки (что является поведением по умолчанию <button> элемент).

Я сегодня столкнулся с этой проблемой. Т. е. предполагается, что если вы нажмете клавишу ENTER в любом из текстовых полей, вы хотите, чтобы отправить форму, даже если поля не являются частью формы, и даже если кнопка типа "отправить".

вы должны переопределить поведение IE по умолчанию с помощью preventDefault (). В селекторе jQuery поместите div, содержащий текстовые поля, которые вы хотите игнорировать клавишу enter -- в вашем случае, div" page". Вместо того, чтобы выбирать весь div, вы также можете указать текстовые поля, которые вы хотите игнорировать специально.

$('#page').keypress(function(e) {
    if(e.which == 13) { // Checks for the enter key
        e.preventDefault(); // Stops IE from triggering the button to be clicked
    }
});

у меня была эта проблема с ASP.NET WebForms:

<asp:Button />

это не может быть решена путем простого добавления типа= "кнопка", потому что ASP.NET заменяет его на type= "submit" (вы можете увидеть это поведение в браузере, Если вы проверяете элемент.)

правильный способ сделать это в asp.net стоит добавить

<asp:Button UseSubmitBehavior="false" />

кнопки. ASP автоматически добавит атрибут type= "button".

т. е. считает, что каких-либо button элемент submit (есть ли у вас form или нет). Он также обрабатывает пресс Enter ключ в элементе формы как неявное представление формы. Итак, поскольку он думает, что вы пытаетесь отправить свою форму, он считает, что это поможет вам и уволит click событие на (что он думает)submit.

вы можете прикрепить keyup событие либо input или button и проверить Enter ключ (e.which === 13) и return false;

решение на основе jQuery, который делает это для каждой кнопки:

 $('button').prop('type', 'button'); // To prevent IE from treating every button as a submit and firing a click() event

однако событие click по-прежнему будет всплывать до родительских элементов по какой-то причине...

Comments

    Ничего не найдено.