如果未提交任何内容,则清除文本字段

时间:2010-09-13 09:30:56

标签: javascript ruby-on-rails textfield

我不知道这是否可行,但在我的rails应用程序中,我目前将文本放在text_field中作为描述而不是外部标签:

      <% 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 %>

这很好用,但是如果我没有输入任何内容,它会搜索“搜索客户”,这不是我想要的。有办法解决这个问题吗?

由于

编辑:

我在text_field_tag中添加了:onSubmit => "if(this.getValue()=='#{inside}'){this.clear();}",但它仍然没有做任何事情。我也尝试了:onbeforesubmit,甚至是一个简单的alert('test'),但由于某些原因它无法正常工作。

4 个答案:

答案 0 :(得分:3)

HTML5中的输入有一个新的占位符属性,它完全符合您的要求,但不适合所有人。

http://diveintohtml5.ep.io/detect.html#input-placeholder

您可以使用它并使用onsubmit事件为具有旧版浏览器的人填充和清除字段。

答案 1 :(得分:1)

如果搜索字段为空或搜索参数对应于您的inside字符串,您也可以在控制器级别忽略该请求,例如:

def search
  if params[:search].blank? || params[:search] == "Search for Customers"
    return
  else
    do_whetever_you_want
  end
end

答案 2 :(得分:0)

如果定义

,请填写params [:search]
<% inside = params[:search] || "Search for Customers" %>

答案 3 :(得分:0)

不确定导轨是否与众不同,但您通常可以使用:

<form onbeforesubmit="someFunction()">

然后在某个功能()中清除文本字段。