Подавление формы сообщения при вводе, когда текстовое поле пусто - PullRequest
3 голосов
/ 23 февраля 2010

Я использую 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 не отправлял форму, если текстовое поле пусто. Есть идеи?

1 Ответ

3 голосов
/ 23 февраля 2010

Если вы используете jQuery, вы можете просто вернуть false, если правила проверки не соблюдены.

$(document).ready( function(){
    $('form').submit(function(){
       if( $('#searchText').val() == '')
          return false;
       else
          return true; //just to be explicit, not really necessary.
    });
});

Или что-то близкое к этому.

...