Я использую MVC, не то чтобы это имело значение, но у меня есть текстовое поле для поиска.
<% using (Html.BeginForm("Index", "Search", FormMethod.Post)) { %>
<%= Html.AntiForgeryToken() %>
<div id="search_box">
<span id="search-title">Search Site</span>
<div>
<%= Html.TextBox("searchText", "type here, then press enter", new { @class = "search_input" }) %>
</div>
</div>
<% } %>
Раньше в этом текстовом поле настраивались события onblur и onfocus для переключения текста, когда пользователь нажимал на него или на него, ничего не печатая. Но я переместил их в файл JS, потому что в конечном итоге мы хотим добавить другие функции через JS, такие как автозаполнение и т. Д.
Проблема с моим JS состоит в том, что он отправляет, несмотря ни на что.
var searchHandler = function() {
var searchBox = "searchText";
var defaultText = "type here, then press enter";
var attachEvents = function() {
$("#" + searchBox).focus(function() {
if (this.value == defaultText) {
this.value = '';
}
}).blur(function() {
if (this.value == '') {
this.value = defaultText;
}
}).keyup(function(event) {
var searchTerms = $("#" + searchBox).val();
if (event.keyCode == 13 && searchTerms == '') {
return false;
}
else {
return true;
}
});
};
return {
init: function() {
$("#" + searchBox).val(defaultText)
attachEvents();
}
}
} ();
$().ready(function() {
searchHandler.init();
});
Что мне действительно нужно, так это просто сделать так, чтобы enter не отправлял форму, если текстовое поле пусто. Есть идеи?