将焦点设置在表单域上,并在表单加载时选择默认文本

时间:2015-10-09 19:39:33

标签: javascript html

我正在开发一个html表单,它使用jscript来执行诸如加载表单设置,使用默认值加载表单,数据验证等功能。然后它使用htm来显示页面。

当表单加载时,第一个字段会填充默认数据,该数据在99%的时间内都是合适的。我希望表单的第一个字段不仅在加载时获得焦点,而且还要选择默认值(文本),以便1%的用户可以轻松地开始键入而无需退格或突出显示文本。

我查看了很多网站,包括stackoverflow,最常见的建议是添加一行 - fieldid.select();该行将紧跟焦点线 - fieldid.focus();添加选择行根本没有效果。该字段确实获得焦点,但光标在默认文本的末尾闪烁,并且未选择文本。

以下是我正在使用的代码段...

function windowLoad()
{
    hideExtraFields();

    loadFormSettings();

    comboEventType.focus();

    var params = getUseCaseParams();
    if (params)
    {
        inputLocation.value = params.EventLocation;
        comboEventType.value = "This is the default text";
        comboEventSubtype.value = "this is the default subtext";
    }
    else
    {
        var unitData = getMyUnitData();
        inputLocation.value = unitData.Position.LocationString;
        comboEventType.value = "This is the default text";
        comboEventSubtype.value = "this is the default subtext";
    }
}

1 个答案:

答案 0 :(得分:0)

确保在设置了默认值后调用select()。

    function windowLoad()
    {
        hideExtraFields();

        loadFormSettings();

        var params = getUseCaseParams();
        if (params)
        {
            inputLocation.value = params.EventLocation;
            comboEventType.value = "This is the default text";
            comboEventSubtype.value = "this is the default subtext";
        }
        else
        {
            var unitData = getMyUnitData();
            inputLocation.value = unitData.Position.LocationString;
            comboEventType.value = "This is the default text";
            comboEventSubtype.value = "this is the default subtext";
        }

          comboEventType.focus();
          inputLocation.focus()
          inputLocation.select()
    }

订单在这里很重要。注意这是有效的: http://jsfiddle.net/g1zmprmx/

但这并不是: http://jsfiddle.net/bspga4gb/