我不知道这是否可行,但在我的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')
,但由于某些原因它无法正常工作。
答案 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()">
然后在某个功能()中清除文本字段。