-1

我有一个有 2 个输入的表格

<input type="text" name="keyword" value="Search" onfocus="wipe(this)"/>
<input type="text"  name="city" value="City" onfocus="wipe(this)"/>

一旦你用鼠标单击它,我的 javascript 就会摆脱表单字段中的预设值:

function wipe(obj)
{
obj.value="";
}

我的问题是,假设用户没有在 city 字段中输入任何内容,我该如何做到这一点,以便在提交表单时该字段的值为空而不是单词 City?

谢谢

4

7 回答 7

2

您在这里使用了错误的技术。您应该使用大多数主流浏览器都支持的占位符, IE 除外。因此,如果这不是您所关心的,那么您绝对应该使用它。特别是,如果您有该字段的标签元素。否则,您需要在提交时检查该输入值并查看它是否等于字符串 city

于 2012-09-05T12:26:12.217 回答
2

占位符 是一个很好的属性,当我们习惯于使用值来显示我们拥有哪个文本框时,它可以解决您的问题,它是过去的历史

 <input type="text" name="keyword" placeholder="Search" />

如果您仍想使用 java 脚本,请修改您的代码,如下所示

<input type="text" name="keyword" value="Search" onfocus="wipe(this,'Search')" onblur="wipe2(this,'Search')"/>
<input type="text"  name="city" value="City" onfocus="wipe(this,'City')" onblur="wipe2(this,'City')"/>

第二种方法的脚本功能

function wipe(obj, str)
{
if(obj.value!=str){
obj.value="";}
}

function wipe2(obj, str)
{if(obj.value==""){
obj.value=str;}
}
于 2012-09-05T12:40:24.823 回答
1

在提交时为什么不检查value='city'

if(obj.value!='city')
{
    //your code here
}

或者如果您在使用 jquery 时没有问题,请使用水印插件,这也将处理浏览器兼容性问题

jQuery水印

于 2012-09-05T12:23:38.493 回答
1

只需声明一个变量 hasChanged 并在调用擦除函数时将其设置为 true。然后在提交按钮的 onclick 函数上调用一个函数说“SubmitFunction()”。

<input type="text" name="keyword" value="Search" id="Search" onfocus="wipe(this)"/>
<input type="text"  name="city" value="City" id="City" onfocus="wipe(this)"/>
<input type="submit"  name="submit" value="submit"  onclick="SubmitFunction();"/>
var hasChanged=false;
function wipe(obj)
 {
  hasChanged=true;
  obj.value="";
 }
function SubmitFunction()
 {
 if(hasChanged==false)
  {

   $("#City").val('');
  }
 }
于 2012-09-05T12:27:31.780 回答
0

您应该再添加一个属性(例如 default <input type="text" name="keyword" default="Search" value="Search" onfocus="wipe(this)"/>),其值与 value 属性相同。

在提交时比较每个表单字段

function onSubmit(){
    for (var fields in form)
      if(form[fields].value== form[fields].getAttribute("default")){
          form[fields].value = "";
      }
   }
}
于 2012-09-05T12:32:06.837 回答
0

尝试这个:

if($('input[name="city"]').val() && $('input[name="city"]').val() != 'city') { yourform.submit(); }
于 2012-09-05T12:23:50.707 回答
0

有关此问题的一些解决方案,请参阅如何使用在键入时消失的提示文本 (jQuery) 预填充输入文本字段。如果您可以使用 HTML5,最好的解决方案可能是使用“占位符”而不是“值”。

于 2012-09-05T12:27:15.930 回答