任何人都可以帮助我使用这个jQuery内场标签进行文本输入

时间:2010-12-15 20:44:37

标签: jquery

所以这是我的场景,我需要输入名称和ID等于两个不同的东西,但下面的代码只允许效果工作,如果label,id和name都具有相同的值,例如下面的代码工作罚款:

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

当我将其更改为我需要的时候它会完全停止工作

我需要它的示例:

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

任何人都可以告诉我在下面的jQuery脚本中它指出名称,标签和ID都必须匹配吗?以及如何从该要求中删除名称或ID。提前谢谢。

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);

2 个答案:

答案 0 :(得分:2)

实际上,这不是插件的问题。 label for="id"的规范是标签应使用元素id作为其for属性。在“我需要它的方式”属性中,您将名称用作for属性。不会工作。名称不需要与id匹配,但是您在“for”中放置的元素ID必须与元素的id属性匹配。

答案 1 :(得分:0)

你不能只用这个插件重命名/ id属性吗?

    <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>

除非您需要nameid属性与该输入不同...如果是这种情况,请您解释为什么/您要尝试用它完成什么?