0

我使用了一个 jquery(来自这个来源)解决方案来使占位符在 IE 中显示,但由于某种原因,它不适用于我页面中的隐藏字段。

如果您在此处查看此演示,您可以在输入地址和邮政编码详细信息后单击“添加人员”按钮,通过单击“添加人员”可以创建一些文本字段。

问题是那些新生成的字段没有显示占位符。默认情况下还会显示 zip 的验证消息。

$(function() {
    var input = document.createElement("input");
    if(('placeholder' in input)==false) { 
        $('[placeholder]').focus(function() {
            var i = $(this);
            if(i.val() == i.attr('placeholder')) {
                i.val('').removeClass('placeholder');
                if(i.hasClass('password')) {
                    i.removeClass('password');
                    this.type='password';
                }           
            }
        }).blur(function() {
            var i = $(this);    
            if(i.val() == '' || i.val() == i.attr('placeholder')) {
                if(this.type=='password') {
                    i.addClass('password');
                    this.type='text';
                }
                i.addClass('placeholder').val(i.attr('placeholder'));
            }
        }).blur().parents('form').submit(function() {
            $(this).find('[placeholder]').each(function() {
                var i = $(this);
                if(i.val() == i.attr('placeholder'))
                    i.val('');
            })
        });
    }
4

3 回答 3

1

您的代码的工作小提琴:

$('.test').on('click', function () {
        if(!$("#signupForm").valid()){
            return;
        }            
        if (c<5){
            $('#loops').append( HTMLloop(++c) );
            setPlaceholder()
        }            
    });

创建新字段后需要调用占位符功能

这是一个 coll 占位符插件

于 2013-08-29T11:01:12.777 回答
1

jQuery 代码仅为运行代码时存在的元素配置事件。之后创建的元素不会附加这些事件。

为了使动态事件与在事件设置后创建的新元素一起工作,您需要使用 jQuery$.on()方法而不是$().focus()or$().blur()方法。

您应该像这样替换现有的事件处理程序:

$('[placeholder]').on("focus", function(){ .... });

这将使您的占位符事件对动态创建的元素做出反应。

或者,您可以考虑尝试其他可用的占位符 polyfill 脚本之一——其中有很多。请参阅此处获取一些链接。

于 2013-08-29T10:37:49.513 回答
0

.test{
display:inline-block;
background:red}

对于 zip 的消息

于 2013-08-29T10:50:59.770 回答