是否有更高效/优化的方式来编写这个jQuery?

时间:2011-01-13 13:04:48

标签: jquery

对以下功能进行编码的最有效方法是什么?如果他们试图提交空表格并清除表格以便他们进入,则会警告人们?

$("#newsletter-subscribe").focus( function() { 
        if(this.value=='Your email address'){
            this.value='';
        }
    });

    $("#newsletter-subscribe").blur( function(){
        if(this.value==''){
            this.value='Your email address'
        }; 
    });

    $("#subscribe").bind("submit", function(e){
        email = $("input#newsletter-subscribe").val();
     $("input#newsletter-subscribe").val(email);
     if(jQuery.trim(email) == 'Your email address' || jQuery.trim(email) == '') {
      alert('Please enter your email address to subscribe.');
      return false;
     }

    });

3 个答案:

答案 0 :(得分:3)

您可能需要查看jQuery Watermark插件。

  

此插件允许您在表单元素上添加默认文本,这些表单元素看起来像水印或作为占位符...以防止不需要的信息发送到服务器的方式工作

答案 1 :(得分:1)

这是我在那种情况下使用的一段代码,检查是否可以使用HTML5占位符[http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute]支持,如果没有,则提供

           if(!('placeholder' in document.createElement('input'))){
                $('input[type="text"][placeholder] , textarea[placeholder]').each(function(){
                    if('' != $(this).attr('placeholder')){
                        if('' == $(this).val() || $(this).attr('placeholder') == $(this).val()){
                            $(this).val($(this).attr('placeholder')).css('color','gray');
                        }
                    }
                });
                $('input[type="text"][placeholder], textarea[placeholder]').focus(function(){
                    if($(this).attr('placeholder') == $(this).val()){
                        $(this).val('');
                        $(this).css('color','#272727');
                    }
                }).blur(function(){
                    if('' == $(this).val()){
                        $(this).css('color','gray').val($(this).attr('placeholder'));
                    }
                });
            }

所以只需写下你的元素: <input name="foo" type=text" placeholder="Placeholder text" />

答案 2 :(得分:0)

最有可能的方法是更有效地做到这一点。但是你的代码很好。没有循环没有大规模的数据结构。没有理由花时间优化这个。