JQuery формы представления. Остановка обновления страницы работает только в новейших браузерах - PullRequest
2 голосов
/ 22 января 2010

Для этого используется jQuery 1.4.

Добавление формы в тег body, ничего особенного в самой форме:

$(function() {
$('body').prepend('<form name="frmSample" id="frmSample"><input class="btn" type="submit" value="SIGN UP" /></form>');
});

Для отправки формы я использую следующее:

$('#frmSample').live('submit', function() {
  var formdata = $(this).serialize();

   $.ajax({
       type: 'POST',
       url: 'http://www.example.com/Values.jsp',
       data: formdata,
       success:function() {
       submit_success();
       }
       });
  return false
  });

В новейших браузерах (Firefox 3.5, Safari 4) это работает отлично.Как только я перехожу к FF 3.0 и ниже или IE 7 и ниже, это останавливается.

Я немного застрял прямо сейчас.Я долго искал и смог найти только упоминание чего-то другого, кроме return false или event.preventDefault ().

Итак, я смотрю, пропустил ли я что-то маленькое илиидти в совершенно неправильном направлении.

Ответы [ 2 ]

3 голосов
/ 22 января 2010

Я бы пошел на шаг дальше, чем stopPopagation:

$('#frmSample').live('submit', function(e) {  
    stopEvent(e);  
    ....etc...etc

И код для stopEvent:

function stopEvent(event) {
    event.preventDefault();
    event.stopPropagation();
    if ($.browser.msie) {
        event.originalEvent.keyCode = 0;
        event.originalEvent.cancelBubble = true;
        event.originalEvent.returnValue = false;
    }
}

Отсюда: http://www.openjs.com/articles/prevent_default_action/

методы returnValue и warnDefault ()

Это делает то, что нам нужно, но мы не можем полагаться на метод return false для предотвращения действия по умолчанию.Предоставление этого кода приведет к выходу из функции, поэтому, если в функции есть что-то еще, этот код использовать нельзя.В большинстве ситуаций, с которыми я сталкиваюсь, достаточно вернуть false, но в некоторых областях нам нужно что-то более радикальное.

Для получения дополнительной информации введите в Google следующее:

protectDefault stopPropagationcancelBubble

1 голос
/ 22 января 2010

Попробуйте

$('#frmSample').live('submit', function(e) {
  e.stopPropagation();
  var formdata = $(this).serialize();

   $.ajax({
       type: 'POST',
       url: 'http://www.example.com/Values.jsp',
       data: formdata,
       success:function() {
       submit_success();
       }
       });
  return false
  });
...