2012-08-14 113 views
0

当您尝试注册并且保留空白/未填充的内容时,会出现错误。 (来自PHP)。 (Smarty:{if isset($smarty.post.registratie.naam)} value="{$smarty.post.registratie.naam}"{else}value="Naam:"{/if}使用jquery高级重置表单

问题:在不成功的注册尝试之后,我的输入字段的默认值是第一个“Naam:”,“Voornaam:”,“Email :”已变更为用户已经放入的值(例如,‘弗雷德里克’)

实施例:http://www.pixsters.be/index.php?page=registratie

用我jQuery代码我清除那里有一个缺省值的字段,虽然我不想清除用户填写的字段。

jQuery代码:

function clearField(e) 
{ 
    if($(this).val() == this.defaultValue) 
    { 
     $(this).val(''); 
    } 

} 

function resetField(e) 
{ 
    if($(this).val() == '') 
    { 
     this.value = this.defaultValue; 
    } 
} 
+0

你能解释一下什么是错与当前的代码?除此之外,你可以简单地在现代浏览器中使用'''。 – pimvdb 2012-08-14 19:23:26

+0

那么如果你想在之前的字段中重新输入(在第一次提交之后)(如果你错误地写了你的名字或者某个东西),这个值就消失了。然后,记住后来编辑它的价值的全部内容都消失了。 – 2012-08-14 19:33:24

回答

0

的问题是,加载新页面时,所输入的值已成为defaultValue秒。相反,你可以使用placeholder属性(也有一些插件老版本浏览器):

<input placeholder="Naam:" ...> 

这将自动照顾没有任何JavaScript打字东西的时候消失的,它不会从您的问题受到影响。

你可能要保持它的黑色,虽然:

/* add other prefixes if necessary */ 
input::-webkit-input-placeholder { color: black; } 
0

我认为这是一个糟糕的界面设计理念,隐藏字段标题。在某些时候,用户将无法确定某些字段的用途。考虑改变设计。

如果你仍然想坚持它只是添加默认值的输入字段,例如:

<form id="my-form"> 
    <input type="text" data-default-value="Enter your name:" name="name" value="{$form.name}"> 
</form> 

$(document).ready(function() { 
    // Iterating through all form elements. 
    $.each('#my-form input[type="text"]', function() { 
     // Adding event listener and calling it afterwards to fill the inputs initially. 
     $(this).change(function() { 
      var $Input = $(this); 
      // If element value is not set (empty), then using default value. 
      if ($Input.val() == '') { 
       $Input.val($Input.attr('data-default-value')); 
      } 
     }).change(); 

    }); 
});