Очистка текстового поля, если ничего не отправлено - PullRequest
0 голосов
/ 13 сентября 2010

Я не знаю, возможно ли это вообще, но в моем приложении rails в настоящее время у меня есть это, чтобы поместить текст в текстовое поле в качестве описания вместо внешней метки:

      <% inside = "Search for Customers" %>
      <%= text_field_tag :search, params[:search],
                         :style => "color:#aaa;",
                         :value => inside, #defined above
                         :onfocus => "if(this.getValue()=='#{inside}'){this.clear();this.style.color = '#000';}",
                         :onblur => "if(this.getValue()==''){this.setValue('#{inside}');this.style.color = '#aaa';}" %>
        <%= submit_tag "Search", :name => nil %>

Это прекрасно работает, но если я ничего не ввожу, он ищет "Поиск клиентов", что я не хотел. Есть ли способ это исправить?

Спасибо

Edit:

Я добавил :onSubmit => "if(this.getValue()=='#{inside}'){this.clear();}" к text_field_tag, но он все еще ничего не делает. Я также попробовал :onbeforesubmit и даже простой alert('test'), но по какой-то причине он не работает.

Ответы [ 4 ]

3 голосов
/ 13 сентября 2010

Существует новый атрибут-заполнитель для входных данных в HTML5, он делает именно то, что вы просите, но пока не будет работать для всех.заполнить и очистить поле с помощью события onsubmit для людей с более старыми браузерами.

1 голос
/ 13 сентября 2010

Вы также можете просто игнорировать запрос на уровне контроллера, если поле поиска пустое или если параметр поиска соответствует вашей строке inside, например:

def search
  if params[:search].blank? || params[:search] == "Search for Customers"
    return
  else
    do_whetever_you_want
  end
end
0 голосов
/ 13 сентября 2010

Не уверен, что рельсы отличают его, но вы обычно можете использовать:

<form onbeforesubmit="someFunction()">

А затем в некоторой функции () очистить текстовое поле.

0 голосов
/ 13 сентября 2010

Заполнить внутри параметрами [: search], если определите

<% inside = params[:search] || "Search for Customers" %>
...