Что такое Rails 3 Способ сделать проверку поля формы перед отправкой? - PullRequest
2 голосов
/ 29 октября 2010

Я хочу запретить поиски длиной менее 3 символов.

В Rails 2.x я бы просто сделал это в событии onClick. Теперь я понимаю, как обрабатывать запросы и ответы AJAX в Rails 3, но не будет ли использование события onClick навязчивым в Rails 3?

Ответы [ 2 ]

2 голосов
/ 29 октября 2010

Да, onclick действительно будет считаться навязчивым.Возможно, вы захотите использовать стороннюю библиотеку проверки в javascript.Это может сработать примерно так:

<form ... class="validated">
  <input type="text" name="name" data-validation="presence=true,format=/[a-zA-Z0-9\s]+/" />
  <input type="submit" value="Send" />
</form>

<script language="javascript">
  $('form.validated').live('submit', function() {
    var data = $(this).serializeArray();
    var errors = [];
    $(this).find('input').each(function() {
      var input = $(this);
      $.each($(this).attr('data-validation').split(','), function(validation) {
        var type, param = validation.split("=");
        if(type == "presence") {
          if(input.val() == "") errors += input.attr('name') + " is empty";
        } else if(type == "format") {
          ...
        }
    });
    return (errors.length == 0);
  });
</script>

(Просто какой-то грубый код из моей головы. Там много предостережений.)

Но вместо того, чтобы писать все это, возможно, вы просто захотитеиспользование: http://github.com/jzaefferer/jquery-validation

0 голосов
/ 29 октября 2010

Понял!Я поместил этот код в application.js:

// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
$(function() {
    $("#search_submit").click(function() {
        if ($("#search_value").val().length < 3) {
            alert("You must supply 3 or more characters in your search.");
            return false;
        }
    })
})

Моя форма:

  <%= form_for(@search, { :remote => true, :html => { :id => 'left', :class => "custom-border" } }) do |f| %>
    <h2><%= f.label :value, "Search By Part or Interchange #" %></h2>
    <p><%= f.text_field :value %></p>
    <p class="button"><%= f.submit "Search" %></p>
  <% end %>

Вуаля!

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