2012-02-13 48 views
0

我正在使用一个表单,并且前端开发人员在文本框内部具有默认文本。例如,邮政编码输入框没有标签,但是在框中有预先填充的文本。这里是一个输入的例子如何处理预先填充的文本框(带默认描述性文本的文本框)客户端?

<input id="place" name="place" type="text" value="(City, State or Zip Code)" 

这个特定的输入是在搜索表单上。这个输入和其他输入一起通过ajax传递给服务器。当结果到达服务器时,有一个称为“place”的post变量,如果用户未更改,则值为“(城市,州或邮编)”。我想知道是否有可以轻松实现的前端解决方案,以便如果默认文本未更改(输入中没有内容),服务器将会将$ _post变量视为空。我已经知道我可以检查服务器,并看到

if $_post[place] == "(City, State or Zip Code)" 
//place is empty, omit it from the search query 

但我正在寻找更好的方法,如果有更好的方式存在。

你如何处理默认输入文本?

谢谢!

编辑:总而言之,我正在寻找一种方法将这个和其他输入传递给服务器,如果它们没有被用户更改,它们将显示为空白。我想在没有使用前面提到的$ _post [place] ......的情况下,在服务器端执行该操作,如果可能的话,还要在客户端执行。

回答

0

您可以让JavaScript(在浏览器中运行)比较当前值和默认值。如果它是默认值,那么不要在请求中沿着该特定变量传递Ajax。

+0

很快!我在这个问题上加了一点点,所以你可能没有看到它。是否存在任何检查方式是当前值==默认值?我可以做检查服务器端,如果不存在另一种方法,我可能会这样做。谢谢! – 2012-02-13 01:47:05

0

克里斯D.你的问题回答狐狸,如果你使用jQuery,你可以在data()的默认值存储在click(),然后发送请求时,比较新的数据VS存储的一个。
@valentinasplaceholder仅在HTML5中受支持,因此可能不是他正在寻找的内容。

$('input').click(function(){ $(this).data('default', $(this).val()); }); 

// On your request 
if ($('input').val() === $('input').data('default')) {} 
+0

如果需要,可以为旧版浏览器添加回退:http://davidwalsh.name/html5-placeholder。 – valentinas 2012-02-13 01:59:58

+0

哦,是的,我知道,但也许他没有使用HTML5 ... – elclanrs 2012-02-13 02:01:41

+0

感谢您的回复。我不是前端人物,但占位符听起来像是一个可能的答案。但是,你说这可能不适用于所有浏览器(我已经知道它在IE中不起作用,我甚至还没有测试过它:p)。我真的只想做占位符的事情,但我不想陷入错误 – 2012-02-13 02:02:47