我希望在达到最大长度(即2)之后改变fechaI的焦点,并将焦点设置在mesI上。提前致谢并抱歉我的英语,而不是我的主要内容。
<h:form id:form>
...
<h:inputText id="fechaI" value="#{solicitud.fechaI}" maxlength="2" size="2">
<a4j:ajax event="change" render="fechaI"/>
</h:inputText>
<h:inputText id="mesI" value="#{solicitud.mesI}" maxlength="2" size="2" >
<a4j:ajax event="change" render="mesI"/>
</h:inputText>
<h:inputText id="anoI" value="#{solicitud.anoI}" maxlength="4" size="4" >
<a4j:ajax event="change" render="anoI"/>
</h:inputText>
...
</h:form>
我的代码更新,仍无效:
<h:form id="form">
<h:inputText id="fechaI" value="#{solicitud.fechaI}" maxlength="2" size="2" tabindex="1"/>
<h:inputText id="mesI" value="#{solicitud.mesI}" maxlength="2" size="2" tabindex="2" />
<h:inputText id="anoI" value="#{solicitud.anoI}" maxlength="4" size="4" tabindex="3" />
</h:form>
<script type="text/javascript">
//<![CDATA[
$('input[maxlength][tabindex]').on('keyup', function() {
$this = $(this);
if ($this.val().length == $this.attr('maxlength')) {
$('input[maxlength][tabindex=' + ($this.attr('tabindex') + 1) + ']').focus();
}
});
//]]>
</script>
答案 0 :(得分:5)
您可以使用JavaScript和RichFaces的 #{rich:element} 表达式,如下所示。
<h:form>
<h:inputText id="fechaI" value="" maxlength="2" size="2" onkeyup="if(this.value.length >= this.getAttribute('maxlength')) {#{rich:element('mesI')}.focus()}"/>
<h:inputText id="mesI" value="" maxlength="2" size="2" onkeyup="if(this.value.length >= this.getAttribute('maxlength')) {#{rich:element('anoI')}.focus()}"/>
<h:inputText id="anoI" value="" maxlength="4" size="4"/>
</h:form>
答案 1 :(得分:1)
没有JSF工具或组件。你需要一些JavaScript。
首先给输入tabindex
以及
<h:inputText ... maxlength="2" tabindex="1" />
<h:inputText ... maxlength="2" tabindex="2" />
<h:inputText ... maxlength="4" tabindex="3" />
然后你可以通过在DOM ready
上执行这个jQuery的小镜头来实现它$('input[maxlength][tabindex]').on('keyup', function() {
var $this = $(this);
if ($this.val().length == $this.attr('maxlength')) {
$("input[maxlength][tabindex='" + (parseInt($this.attr('tabindex')) + 1) + "']").focus();
}
});
如果您使用的是不包含jQuery 1.7.x的旧版RichFaces,请使用jQuery.live()
代替jQuery.on()
。