如何在聚焦场时始终使用select()?可能吗?

时间:2010-12-03 13:34:33

标签: javascript jquery forms

我最近为我的网站创建了一个新表单,标签内置于表单字段中 - 例如" Title"一,当你在这个网站上提问时。

您可以在此处查看:http://utilitiessavings.co.uk/business-energy/business-electricity/(向下滚动)

一旦场地聚焦,我最初让标签消失了,但是决定在用户​​开始输入之前离开它会更好,因为否则他们可能会忘记该字段的实际用途

唯一的问题是插入符号在标签文本中,并且当您开始输入时它不会消失。

这是我的代码(是的,被黑客攻击):

    var keypressed = false;

    // for each input field with a title
    $('input[title], textarea[title]').each(function() {

        // if it has no value
        if($(this).val() === '' || $(this).attr('title'))
        {

            // add the labeled class
            $(this).addClass('labeled');

            // set the value to the title
            $(this).val($(this).attr('title'));

        }

        // when focused
        $(this).focus(function()
        {

            // select the whole field
            $(this).select();

            // if the value is the label/title
            if($(this).val() === $(this).attr('title'))
            {

                // wait for keypress
                $(this).keypress(function() {

                    // if first key pressed
                    if(keypressed == false)
                    {
                        // clear the field and remove labeled class
                        $(this).removeClass('labeled').val('');

                        // set keypressed to true so next keypress doesn't clear field again
                        keypressed = true;
                    }
                });
            }
        }).click(function()
        {

            // select the whole field
            $(this).select();

        });

        // when undocused
        $(this).blur(function() {

            // if blank
            if($(this).val() === '') {

                // add labeled class and title/label
                $(this).addClass('labeled').val($(this).attr('title'));
            }
            else
            {
                if($(this).val() === $(this).attr('title'))
                {
                    $(this).addClass('labeled');
                }


            }



            // set keypressed to false for next field
            keypressed = false;

        });

    });

你会注意到我已经把select()onfocus和onclick放了,但它仍然无法正常工作。很奇怪。有人请告诉我们是否需要它,或者我是否应该像stackoverflow.com那样问一个问题框?

任何帮助都非常感谢,并且对于漫无目的而感到遗憾,但我总觉得提供更多不足的信息会更好:)

全心全意,

德鲁

1 个答案:

答案 0 :(得分:0)

如上所述,有人发布了此链接,这是解决此问题的绝佳方法。

http://fuelyourcoding.com/scripts/infield