предотвращение дефолта не работает в Google Chrome 5 - PullRequest
1 голос
/ 24 августа 2010

Я хочу, чтобы кнопка отправки формы не загружала страницу.Это работает в Firefox 3.6, Safari 5 и Opera.Но Chrome 5 не препятствует ссылке.

Вот форма.

<form class="container_7" id="find-store-all" action=" ">
 <label for="customer-loc" class="grid_3">Find a Store Near You:</label>
 <input name="customer-loc" id="customer-loc" class="grid_3" type="text" placeholder="zip code or address"  />
    <button type="submit" id="customer-loc-sub" class="grid_1" >Enter</button>
</form>

Я использую делегирование событий для управления кликом.Вот JavaScript.

document.onclick = handleClick;

function handleClick(e){
 if(!e) var e = window.event; 
 var target = e.target || e.srcElement;

 switch(target.id){
  case "customer-loc-sub" :
  e.preventDefault();
  findClosestStoreOne();
  break;
 }

}

Любые предложения будут оценены.

Ответы [ 2 ]

5 голосов
/ 24 августа 2010

preventDefault() не лучший способ предотвратить поведение браузера по умолчанию в этом типе обработчика событий DOM 0, так как он, безусловно, не работает в IE и, возможно, в других браузерах.Просто используйте return false; вместо этого.Работает во всех браузерах.

document.onclick = handleClick;

function handleClick(e){
 if(!e) var e = window.event; 
 var target = e.target || e.srcElement;

 switch(target.id){
  case "customer-loc-sub" :
  findClosestStoreOne();
  return false;
 }
}
0 голосов
/ 24 августа 2010

Решил это. На это повлияло еще одно событие (весь сценарий около 900 строк). Спасибо за вашу помощь. Особенно Райан Кинал. Его комментарий заставил меня взглянуть на проблему с другой стороны ... так сказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...