2010-12-15 23 views
0

Donc, voici mon scénario, j'ai besoin d'avoir un nom d'entrée et ID deux choses différentes, mais le code ci-dessous ne permet que l'effet si label, id et nom tous ont la même valeur, par exemple le code suivant fonctionne très bien:Quelqu'un peut-il m'aider avec ce label jQuery infield pour les entrées de texte

 <p> 
      <label for="eventid" class="label_login">*Participant Code</label><br /> 
      <input type="text" name="eventid" value="" id="eventid" class="input_size"/>  
     </p> 

Quand je change à la façon dont je besoin d'être il cesse complètement de travailler

exemple de la façon dont je besoin d'être:

 <p> 
      <label for="eventid" class="label_login">*Participant Code</label><br /> 
      <input type="text" name="eventid" value="" id="part_code" class="input_size"/> 
     </p> 

Quelqu'un peut-il me dire où, dans le script jQuery ci-dessous, le nom, l'étiquette et l'ID doivent-ils correspondre? et comment puis-je supprimer le nom ou l'identifiant de cette exigence. Merci d'avance.

Non-minified version

(function($){$.InFieldLabels=function(b,c,d){var f=this;f.$label=$(b);f.label=b;f.$field=$(c);f.field=c;f.$label.data("InFieldLabels",f);f.showing=true;f.init=function(){f.options=$.extend({},$.InFieldLabels.defaultOptions,d);if(f.$field.val()!=""){f.$label.hide();f.showing=false};f.$field.focus(function(){f.fadeOnFocus()}).blur(function(){f.checkForEmpty(true)}).bind('keydown.infieldlabel',function(e){f.hideOnChange(e)}).change(function(e){f.checkForEmpty()}).bind('onPropertyChange',function(){f.checkForEmpty()})};f.fadeOnFocus=function(){if(f.showing){f.setOpacity(f.options.fadeOpacity)}};f.setOpacity=function(a){f.$label.stop().animate({opacity:a},f.options.fadeDuration);f.showing=(a>0.0)};f.checkForEmpty=function(a){if(f.$field.val()==""){f.prepForShow();f.setOpacity(a?1.0:f.options.fadeOpacity)}else{f.setOpacity(0.0)}};f.prepForShow=function(e){if(!f.showing){f.$label.css({opacity:0.0}).show();f.$field.bind('keydown.infieldlabel',function(e){f.hideOnChange(e)})}};f.hideOnChange=function(e){if((e.keyCode==16)||(e.keyCode==9))return;if(f.showing){f.$label.hide();f.showing=false};f.$field.unbind('keydown.infieldlabel')};f.init()};$.InFieldLabels.defaultOptions={fadeOpacity:0.5,fadeDuration:300};$.fn.inFieldLabels=function(c){return this.each(function(){var a=$(this).attr('for');if(!a)return;var b=$("input#"+a+"[type='text'],"+"input#"+a+"[type='password'],"+"textarea#"+a);if(b.length==0)return;(new $.InFieldLabels(this,b[0],c))})}})(jQuery); 
+1

Le code d'extension que vous fournissez est une version réduite d'un fichier javascript de 130 lignes. Ce n'est pas vraiment utilisable pour quiconque veut aider. (J'ai ajouté un lien vers le code source complet.) –

+0

Par ailleurs, c'est là que j'ai trouvé l'exemple dans lequel je l'ai pris, espérons que cela aide. http://fuelyourcoding.com/scripts/infield/ – NewB

Répondre

2

En fait, ce n'est pas un problème avec le plug-in. La spécification de label for="id" est que l'étiquette doit utiliser l'ID d'élément comme attribut for. Dans votre attribut "comment j'ai besoin d'être", vous utilisez le nom comme attribut for. Ne va pas au travail. Le nom ne doit pas nécessairement correspondre à l'identifiant, mais l'identifiant de l'élément que vous avez ajouté à "for" doit correspondre à l'attribut id de l'élément. Vous ne pouvez pas simplement renommer/id les propriétés avec ce plugin?

+0

Je me sens un peu bête maintenant après avoir passé quelques fois me gratter la tête lol Merci Jacob – NewB

+2

@NewB "se sentir un peu bête" est un état périodique dans cette industrie que tous ceux qui participent rencontrent :) –

0

<p> 
     <label for="part_code" class="label_login">*Participant Code</label><br /> 
     <input type="text" name="part_code" value="" id="part_code" class="input_size"/> 
    </p> 

À moins que vous avez besoin des propriétés name et id être différent pour cette entrée ... si tel est le cas pouvez-vous s'il vous plaît expliquer pourquoi/ce que vous essayez d'accomplir avec elle?