Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:如果用户没有更改,则表单值为空_Javascript_Html_Forms_Javascript Events - Fatal编程技术网

javascript:如果用户没有更改,则表单值为空

javascript:如果用户没有更改,则表单值为空,javascript,html,forms,javascript-events,Javascript,Html,Forms,Javascript Events,我有一个有两个输入的表单 <input type="text" name="keyword" value="Search" onfocus="wipe(this)"/> <input type="text" name="city" value="City" onfocus="wipe(this)"/> 我的问题是,假设用户没有在city字段中键入任何内容,我如何使其在提交表单时该字段的值为空而不是单词city 谢谢在提交时为什么不检查value='city' 或者,如

我有一个有两个输入的表单

<input type="text" name="keyword" value="Search" onfocus="wipe(this)"/>
<input type="text"  name="city" value="City" onfocus="wipe(this)"/>
我的问题是,假设用户没有在city字段中键入任何内容,我如何使其在提交表单时该字段的值为空而不是单词city


谢谢

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

或者,如果您在使用jquery时没有问题,那么使用水印插件也可以解决浏览器兼容性问题

试试这个:

if($('input[name="city"]').val() && $('input[name="city"]').val() != 'city') { yourform.submit(); }

你在这里使用了错误的技术。你应该使用的是IE的常规例外。因此,如果这不是你关心的问题,你肯定应该使用它。特别是,如果该字段有一个label元素。否则,您需要在提交时检查该输入值,并查看它是否等于字符串city

有关此问题的一些解决方案,请参阅。如果您同意使用HTML5,最好的解决方案可能是使用占位符而不是值。

只要声明一个变量已更改,并在调用wipe函数时将其设置为true。然后在Submit按钮的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('');
  }
 }

你应该再加一个属性。默认值与值属性相同

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

function onSubmit(){
    for (var fields in form)
      if(form[fields].value== form[fields].getAttribute("default")){
          form[fields].value = "";
      }
   }
}
占位符是一个很好的属性,它可以解决您的问题。当我们习惯于使用值来显示这个文本框时,它是一个过去的时间历史

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

这是一个jquery的答案,但问题不包含jquery@rahul我在回答中提到了这一点,但在大多数情况下这是一个很好的折衷。你可以将它与IE一起使用,它有js库。@除以零是的,你可以使用它,但我不会为了占位符而拉整个库,这是一个判断调用,虽然Modernizer不会多填充属性,但它只会检测对它的支持。我已经写了一篇文章,将为所有主要浏览器添加占位符支持,包括IE6。让我知道这对你或其他人都有帮助。是的,这很好,谢谢,我无法让jquery在我上面批准的anwser中工作。占位符使用安全吗?或者使用javascript是更好的做法吗?占位符可以安全地使用它,但在一些旧的浏览器中不起作用,你在哪里被困在jquerywait中,onblur位不起作用。我只是想用很多来自每个人的好消息。我简单的大脑在使用占位符后最能理解这一点。谢谢
function onSubmit(){
    for (var fields in form)
      if(form[fields].value== form[fields].getAttribute("default")){
          form[fields].value = "";
      }
   }
}
 <input type="text" name="keyword" placeholder="Search" />
<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;}
}