Jquery: запретить перезагрузку страницы при нажатии типа ввода = отправить - PullRequest
4 голосов
/ 15 июля 2011

У меня есть следующий код в проекте MVC 3 (Razor):

<div class="user_info" id="id_user_info">
   <script type="text/ecmascript"  >
      $(function () {
         $('#buttonClear').live('submit', function (e) { return false; });
         $('#buttonClear').bind('click', function () {
            $('username').value = "";
            $('password').value = "";
         });
   </script>
   @using (Html.BeginForm("Login", "Account", FormMethod.Post, new { id = "loginForm" }))
   {
      <label for="username">Enter:</label>
      <input name="username" id="username" type="text" value="" /><br />
      <input name="password" id="password" type="password" value="" /><br />
      <input name="rememberMe" id="rememberMe" type="checkbox" value="true" />
      <label for="rememberMe">Remember me?</label><br />
      <input id="buttonLogin" type='submit' value="Login" />
      <input id="buttonClear" type='submit' value="Clear" />
   }
</div>

Мне нужно сохранить "buttonClear как тип sumbit из-за стиля, но мне нужно отключить / избежать / предотвратитьпосле перезагрузки страницы.

Есть ли способ удалить «отправить событие» из «buttonClear»?

Спасибо, Рикардо

Ответы [ 5 ]

8 голосов
/ 15 июля 2011
$('#buttonClear').click(function(e){
  // do whatever actions you need here
  e.preventDefault();
});
3 голосов
/ 15 июля 2011

Я бы предложил удалить обработчик, который вы привязываете к событию submit, и вместо этого использовать preventDefault в обработчике click:

$('#buttonClear').bind('click', function (e) {
   e.preventDefault();
   $('username').value = "";
   $('password').value = "";
});

Событие submit подходит вамПытался не будет работать, потому что submit события могут быть связаны только с form элементами, а не с кнопками, отправляющими форму.

2 голосов
/ 15 июля 2011

попробуй e.preventDefault();

   $('#buttonClear').bind('click', function (e) {
       e.preventDefault();
       $('username').value = "";
       $('password').value = "";
    });
1 голос
/ 02 августа 2012

Хотя я понимаю, что этот пост немного старше, я хотел предоставить этот ответ и для записи.

<input id="buttonClear" type='submit' value="Clear" />

Обычно у вас не было бы нескольких кнопок отправки для одной формы. Кроме того, поскольку вы на самом деле не хотите использовать функцию отправки, было бы неправильно использовать этот тип. Наконец, вы ищете «Очистить» или «Сброс» функциональность. Ваша кнопка должна быть:

<input id="buttonClear" type="reset" value="Clear" />
0 голосов
/ 15 июля 2011

Почему не просто

$('#buttonClear').click(function() {
    return false;
});
...