2015-04-30 2 views
0

У меня есть форма в моем проекте ASP.NET, которая принимает пользователей и добавляет их в URL-адрес для поиска в wiki. Форма отлично работает при входе в поисковый запрос и нажимает кнопку «поиск», однако, когда вы вводите поле ввода и нажимаете «ввод», страница обновляется, и окно очищается.Форма Представление при вводе Пресса

мой HTML

 <form> 
      <label id="sideBarLabel"> Services 
       <input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-string" /> 
      </label> 
      <a href="#" id="searchWikiButton" class="button" onclick="searchWiki();">Search Wiki</a> 
     </form> 

мои JS

function searchWiki(){ 
    var siteQuery = $('#query-string').val(); 
    window.location.href = "/dosearchsite.action?queryString=" + siteQuery; 

} 

Может кто-нибудь помочь?

+0

возможно дубликат [Как предотвратить ENTER нажатие представить веб-форму?] (Http://stackoverflow.com/questions/585396/how-to-prevent-enter-keypress-to-submit-a -web-form) – melancia

+0

Возможный дубликат [jquery disable form submit on enter] (http://stackoverflow.com/questions/11235622/jquery-disable-form-submit-on-enter) – melancia

+0

Возможный дубликат [jQuery, предотвратить form submit from enter, но разрешить отправку формы нажатием кнопки] (http://stackoverflow.com/questions/21329562/jquery-prevent-form-submit-from-enter-but-allow-form-submit-by-button-click) – melancia

ответ

1

Ваш поисковый запросWiki() Метод js вызывается только в том случае, если на вашей кнопке поднят значок onclick, но не при отправке вашей формы. Существует несколько способов добиться того, что вы хотите:

Добавить метод Js поймать onsubmit событие вашей формы:

$("form").on("submit", searchWiki()); 

Или добавить тег на вашей форме:

<form onsubmit="searchWiki()"> 

Или укажите атрибут действия в вашей форме:

<form action="/dosearchsite.action"> 

Обратите внимание, что в ASP. NET, ModelBinder свяжет ваши входы формы с параметрами действия контроллера, используя атрибут name входов. Это означает, что вы не должны указывать их в URL-адресе самостоятельно. Вы также должны объявить свою форму с помощью Html.BeginForm или Ajax.BeginForm, если хотите, чтобы ваша форма была отправлена ​​ajax.

@Html.BeginForm("ActionName", "ControllerName") 
{ 
    <label id="sideBarLabel">Services 
     <input type="text" placeholder="Search Wiki: e.g. E911" name="queryString" id="query-string" /> 
    </label> 
    <input type="submit" class="button" value="Search Wiki"/> 
} 

Это вызовет поискWiki, когда вы нажмете enter.

+0

Ваш поиск дал мне возможность начать работу в нужном месте. Проблема была в том, что у меня был тег формы на моей главной странице, из-за которой моя форма не работала, потому что она была вложена в другой элемент формы. http://stackoverflow.com/questions/15480287/a-page-can-have-only-one-server-side-form-tag/15480367#15480367 – onTheInternet

+0

Хорошо, я не знаю, хорошая практика или нет. , но большую часть времени я даю идентификатор своим формам, на всякий случай, если на странице может быть более одной формы. Рад, что помогло вам в любом случае. –

0
$('#query-string').keypress(function(event) { 
if (event.keyCode == 13) { 
searchWiki(); 
event.preventDefault();}}); 
Смежные вопросы