From 70c8209344bbe125867062b74f21a12f73b6faf2 Mon Sep 17 00:00:00 2001 From: mo Date: Sat, 9 Sep 2017 12:46:07 -0600 Subject: validate search form. --- app/assets/javascripts/models/search.js.coffee | 16 ++++++++++++++++ app/assets/javascripts/views/form_view.js.coffee | 5 ++++- app/assets/javascripts/views/search/form.js.coffee | 5 +++++ app/views/layouts/_header.html.erb | 10 ++++++---- 4 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 app/assets/javascripts/models/search.js.coffee create mode 100644 app/assets/javascripts/views/search/form.js.coffee (limited to 'app') diff --git a/app/assets/javascripts/models/search.js.coffee b/app/assets/javascripts/models/search.js.coffee new file mode 100644 index 00000000..df81bd4a --- /dev/null +++ b/app/assets/javascripts/models/search.js.coffee @@ -0,0 +1,16 @@ +#= require ./translation + +class csx.Models.Search extends Backbone.Model + translation: new csx.Translation('search') + defaults: + q: null + + requiredFields: ['q'] + + validate: (attributes, options) -> + errors = {} + _.each @requiredFields, (field) => + if _.isEmpty(attributes[field]) + errors[field] = @translation.errorFor(field, 'blank') + + return errors if _.keys(errors).length > 0 diff --git a/app/assets/javascripts/views/form_view.js.coffee b/app/assets/javascripts/views/form_view.js.coffee index d58f7198..43183537 100644 --- a/app/assets/javascripts/views/form_view.js.coffee +++ b/app/assets/javascripts/views/form_view.js.coffee @@ -35,6 +35,9 @@ class csx.FormView extends csx.AutoView else element.val() + fieldName: (name) -> + return name if _.isEmpty(@modelKey) + "#{@modelKey}_#{name}" + field: (name) -> @$("##{@fieldName(name)}") - fieldName: (name) -> "#{@modelKey}_#{name}" fieldNameFor: (element) -> element.attr('id').replace("#{@modelKey}_", '') diff --git a/app/assets/javascripts/views/search/form.js.coffee b/app/assets/javascripts/views/search/form.js.coffee new file mode 100644 index 00000000..7e1b1f05 --- /dev/null +++ b/app/assets/javascripts/views/search/form.js.coffee @@ -0,0 +1,5 @@ +class csx.Views.SearchForm extends csx.FormView + @viewName 'search-form' + events: + 'input #q': 'onInput' + 'submit form': 'onSubmit' diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 2597851a..0e1b403c 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -40,10 +40,12 @@ <% end %> - <%= form_tag(configuration_for(:search_path, search_path), method: :get, name: "search", class: "form-inline my-2 my-lg-0") do %> - <%= text_field_tag :q, params[:q], class: 'form-control mr-sm-2', placeholder: 'Search', 'aria-label' => "Search", required: :required %> - - <% end %> +
+ <%= form_tag(configuration_for(:search_path, search_path), method: :get, name: "search", class: "form-inline my-2 my-lg-0", novalidate: :novalidate) do %> + <%= text_field_tag :q, params[:q], class: 'form-control mr-sm-2', placeholder: 'Search', 'aria-label' => "Search", required: :required %> + + <% end %> +
-- cgit v1.2.3