2012-08-14 24 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(); 

    }); 
});