JSF标签/焦点功能无法在任何版本的IE中使用

时间:2013-08-21 16:07:50

标签: jsf

我有一个主要登录页面使用ui:include包含的模式。我能够确认ui:include部分没有导致我遇到的问题。

在模态上,我有三个JSF元素;两个inputSecrets(myFaces)和一个CommandLink(myFaces)用于提交按钮。以下是代码段:

<div style="padding: 0px 20px 5px 140px; width: 300px; text-align: left; font-size: 12px; font-family: Verdana, Geneva, sans-serif; font-weight: 600;">
        New Password:<br/>
        <t:inputSecret forceId="true" id="pwOne" title="New Password" size="27"  maxlength="20"
                       value="#{accountSettingsBean.newPassword}"
                       tabindex="72" />
        <br/><br/>
        Confirm Password:<br/>
        <t:inputSecret forceId="true" id="pwTwo" title="Confirm Password" size="27"  maxlength="20"
                       value="#{accountSettingsBean.confirmNewPassword}"
                       tabindex="73"/>
    </div>

    <div id="submitButton" style="width: 420px; align: left;">
        <t:commandLink value="SUBMIT"
                       style="color:white; text-decoration:none; text-shadow: 0 -1px 0 rgba(0,0,0,0.3); background: #4775AD; background: -moz-linear-gradient(top, #5b93d8 0%, #4775AD 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5b93d8), color-stop(100%, #4775AD)); background: -webkit-linear-gradient(top, #5b93d8 0%, #4775AD 100%); background: -o-linear-gradient(top, #5b93d8 0%, #4775AD 100%); background: -ms-linear-gradient(top, #5b93d8 0%, #4775AD 100%); background: linear-gradient(to bottom, #5b93d8 0%, #4775AD 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#5b93d8', endColorstr='#4775AD', GradientType=0 ); border: 1px solid #848484; padding: 0px 5px;white-space: nowrap;font-size: 14px !important;text-align: center; line-height: 40px;font-weight: bold;-webkit-border-top-left-radius: 10px; -webkit-border-bottom-left-radius: 10px;-webkit-border-bottom-right-radius: 10px; border-radius: 10px 10px 10px 10px; width: 150px; height: 40px; margin-left: -20px; margin-top: 15px; margin-bottom: 10px; display: block;"
                       action="#{accountSettingsBean.updateExpiredPassword}"
                       id="lnkUpdateExpiredPw"
                       binding="#{accountSettingsBean.lnkUpdateExpiredPw}"
                       tabindex="74" />

在通过开发工具提供的每个IE版本中,标签都无法正常工作。在IE9中,第一个标签按下似乎在看到模态时将焦点返回到主页面,而第二个标签按下则将其提供给第二个inputSecret。在IE8中,选项卡适用于“密码”和“确认密码”字段,但我永远不会切换到提交按钮。我无法在任何版本的IE中切换到提交按钮。此外,点击“返回”会点击包含我的模态的主页面上的提交按钮,而不是专注于IE所关注的任何字段。

我尝试过的一件事是将一个“onkeydown”事件链接到一个javascript函数,手动将焦点放在我想要的字段上。我还没有能够让它工作,但我想找到问题的实际根源,为什么它不能在IE中工作。

1 个答案:

答案 0 :(得分:0)

这是一个黑客,但我能够通过在三个不同的元素中嵌套inputtext字段来修复IE中的这个问题,如下所示:

<t:inputSecret forceId="true" id="newPasswordOne" title="New Password" size="27"  maxlength="20"
                       value="#{accountSettingsBean.newPassword}">
        <t:inputText tabindex="25" size="1" disabled="true" style="display: none" />
        </t:inputSecret>

它没有打破firefox或chrome。我不确定为什么会这样,但确实如此。

相关问题