{"id":1053,"date":"2010-02-01T17:20:18","date_gmt":"2010-02-01T15:20:18","guid":{"rendered":"http:\/\/nyams.planbweb.com\/blog\/?p=1053"},"modified":"2010-02-01T17:20:18","modified_gmt":"2010-02-01T15:20:18","slug":"lattribut-placeholder-de-html5","status":"publish","type":"post","link":"https:\/\/nyamsprod.com\/blog\/lattribut-placeholder-de-html5\/","title":{"rendered":"L&#8217;attribut placeholder de html5"},"content":{"rendered":"<div class=\"message warning\">\n<p><strong>Attention:<\/strong> Les informations de ce billet sont susceptibles d'&ecirc;tre obsol&egrave;tes car vieux de plus 2 ans.<\/p>\n<p><strong>Warning: <\/strong> The information you are reading may be obsolete, this post was published more than 2 years ago.<\/p>\n<\/div><p>Comme vous le savez sans aucun doute <strong>le <\/strong><em><strong>html5 <\/strong><\/em><strong>c&#8217;est le nouvel <\/strong><em><strong>Ajax<\/strong><\/em><strong>, mais lui,\u00a0 il lave encore plus blanc que blanc \ud83d\ude42 .<\/strong> Non plus s\u00e9rieusement, je vais vous pr\u00e9senter un nouvel attribut assez int\u00e9ressant et dont vous ne pourrez sans doute plus vous passer dans les ann\u00e9es \u00e0 venir: l&#8217;attribut <em>placeholder<\/em>.<!--more--><br \/>\nCette attribut, tout le monde le connait et l&#8217;a d\u00e9j\u00e0 implant\u00e9 dans l&#8217;un ou l&#8217;autre de ses sites sans m\u00eame le savoir. Son utilisation qui n&#8217;est pas obligatoire et toute de m\u00eame assez importante. Il sert \u00e0 montrer du texte d&#8217;information dans un champs de formulaire. Ce texte, lorsqu&#8217;on clique sur le champs auquel il appartient, disparait et vous laisse remplir le champs avec le contenu que vous avez r\u00e9ellement envie d&#8217;envoyer. Cette technique est largement utilis\u00e9e de nos jours pour montrer une information permettant le remplissage plus appropri\u00e9 d&#8217;un formulaire. Mais avec l&#8217;attribut <em>placeholder<\/em>, tout est g\u00e9r\u00e9 par le Navigateur et non via javascript.<\/p>\n<p>la bonne nouvelle, c&#8217;est que l&#8217;attribut <em>placeholder <\/em>est d\u00e9j\u00e0 implant\u00e9 dans <em>Webkit <\/em>et, de fait, il fonctionne d\u00e9j\u00e0 dans les derni\u00e8res versions de <em>Safari <\/em>et de <em>Chrome <\/em>(Chrome 4 si j&#8217;ai tout bien compris). la mauvaise nouvelle, c&#8217;est qu&#8217;en dehors de <em>Webkit <\/em>personne ne le comprends&#8230; encore. Mais cela n&#8217;est pas grave, gr\u00e2ce au <em>javascript <\/em>et au code qui suit ci-dessous, vous allez pouvoir rem\u00e9dier \u00e0 ce probl\u00e8me de <em>IE6 <\/em>(beuuuh) \u00e0 <em>FF 3.6 <\/em>en passant m\u00eame par la pr\u00e9-build de <em>Opera <\/em>10.5, c&#8217;est pour dire.<\/p>\n<p>Je tiens \u00e0 pr\u00e9ciser que pour la rapidit\u00e9 de codage et parce que tout le monde l&#8217;aime bien j&#8217;ai utilis\u00e9 <em>jQuery <\/em>dans sa version la plus r\u00e9cente la 1.4.1 . Mais pour les nostalgiques et les ringards comme moi, il est tout \u00e0 fait possible d&#8217;\u00e9crire ce code sans utiliser de framework. D&#8217;ailleurs cela serait un tr\u00e8s bon exercice pour ceux d&#8217;entres vous qui se disent guru en javascript \ud83d\ude09 .<\/p>\n<p>Voici le code utilis\u00e9 :<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">jQuery(function($){\n \/\/fontion de verification par object detection que le navigateur comprend ou non l'attribut placeholder\n var isPlaceholderSupported = function () {\n var o = document.createElement('input');\n return 'placeholder' in o;\n };\n \/\/si il ne le comprends pas alors on sevit\n if (!isPlaceholderSupported()) {\n     var togglePlaceholderText = function (el) {\n         var color = '#999', v = $.trim(el.val()), p = el.attr('placeholder');\n         if (v == '') {\n             el.val(p);\n             el.css({'color':color});\n        } else if (v == p) {\n            el.val('');\n            el.css({'color':''});\n         }\n     };\n     $('input&#x5B;placeholder]')\n      .each(function(){togglePlaceholderText($(this));})\n      .click(function(){togglePlaceholderText($(this));})\n      .blur(function(){togglePlaceholderText($(this));})\n      .closest('form').submit(function(){$(this).find('input&#x5B;placeholder]').each(function(){togglePlaceholderText($(this));})});\n    }\n});<\/pre>\n<p>Et parce que vous m&#8217;\u00eates sympathique, <a href=\"http:\/\/nyams.planbweb.com\/test\/placeholder\/\">la page d&#8217;exemple qui va avec<\/a>. <em><strong>Attention <\/strong>d&#8217;autres nouveaut\u00e9s assez int\u00e9ressantes du html5 ont \u00e9taient utilis\u00e9es pour encore plus \u00e9picer le code&#8230; les d\u00e9couvrirez-vous ???<\/em><\/p>\n<p>Enfin, notez que mon code :<\/p>\n<ol>\n<li>s&#8217;assure de ne pas soumettre la valeur de l&#8217;attribut <em>placeholder <\/em>dans le cas o\u00f9 le formulaire et soumis avec le champs ayant pour valeur celle de son attribut <em>placeholder<\/em>.<\/li>\n<li>ne fonctionne QUE dans le cas o\u00f9 le navigateur ne g\u00e8re pas encore l&#8217;attribut <em>placeholder<\/em>. Wouahhh comment tu fais ? Tu d\u00e9tectes le navigateur alors? Non jeune padawan.. je fais de l&#8217;Object Detection \ud83d\ude09 .<\/li>\n<\/ol>\n<p>A bon entendeur\/lecteur\/codeur .. je vous salue!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utilisation de l&#8217;attribut placeholder de html5 pour g\u00e9rer l&#8217;affichage d&#8217;information compl\u00e9mentaire pour certains champs de formulaire.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[5],"tags":[31,206,220,256,396,417,427,536,567],"class_list":["post-1053","post","type-post","status-publish","format-standard","hentry","category-web","tag-ajax","tag-formulaire","tag-gecko","tag-html5","tag-object-detection","tag-placholder","tag-presto","tag-trident","tag-webkit"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/posts\/1053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/comments?post=1053"}],"version-history":[{"count":0,"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/posts\/1053\/revisions"}],"wp:attachment":[{"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/media?parent=1053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/categories?post=1053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nyamsprod.com\/blog\/wp-json\/wp\/v2\/tags?post=1053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}