stg*_*stg 3 javascript jquery client-side primefaces selectoneradio
在我的JSF视图中,我使用的是p:selectOneRadio.现在我必须在客户端更改此组件的值作为副作用.在这个组件的Client Side API中,我发现以下内容,如果我找到了正确的方法,我认为我可以使用它:
PrimeFaces.widget.SelectOneRadio=PrimeFaces.widget.BaseWidget.extend(
{
// ...
select:function(a){
this.checkedRadio=a;
a.addClass("ui-state-active")
.children(".ui-radiobutton-icon")
.addClass("ui-icon-bullet").removeClass("ui-icon-blank");
a.prev().children(":radio").prop("checked",true)}
});
Run Code Online (Sandbox Code Playgroud)
对我来说(没有太多关于JS的知识)看起来我必须传递类似于我想要选择的单选按钮的实例.我已经通过多种方式尝试过这种方法,但它们都不起作用:
<p:selectOneRadio widgetVar="sel" id="id-sel" >
<f:selectItem itemValue="#{false}" itemLabel="n/a" />
<f:selectItem itemValue="#{true}" itemLabel="date" />
</p:selectOneRadio>
<p:commandButton onclick="PF('sel').select(sel.inputs[1]);"/>
<p:commandButton onclick="PF('sel').select(PF('sel').inputs[1]);"/>
<p:commandButton onclick="PF('sel').select( $('input:radio[id*=id-sel\\:1]') );"/>
<p:commandButton
onclick="PF('sel').select(document.getElementById('menuform:id-sel:1'));"/>
Run Code Online (Sandbox Code Playgroud)
但是,我也尝试直接传递值和/或标签(这适用于selectOneMenu).再次没有成功(但在这种情况下并不奇怪)
<p:commandButton onclick="PF('sel').select('date');"/>
<p:commandButton onclick="PF('sel').select('true');"/>
<p:commandButton onclick="PF('sel').select(1);"/>
<p:commandButton onclick="PF('sel').select(true);"/>
<p:commandButton onclick="PF('sel').select(#{true});"/>
Run Code Online (Sandbox Code Playgroud)
谁知道该怎么办?
应传递的元素是<span>模拟无线电外观的元素,此跨度具有.ui-radiobutton-boxCSS类,简单的调用将是:
PF('selectOneRadioWV').select($('.ui-radiobutton-box').first())
Run Code Online (Sandbox Code Playgroud)
这将选择第一个无线电.
然而,select功能就只能选择,这是不是在预期的行为,所预期的将取消选择以前选择的广播和选择新的一个.
就是这样说,如果你想根据价值选择(这更有意义),下面的方法会起作用:
PF('selectOneRadioWV').jq.find('input:radio[value="1"]').parent().next().trigger('click.selectOneRadio');
Run Code Online (Sandbox Code Playgroud)
在那里,它选择具有该值的无线电输入,1然后导航到.ui-radiobutton-box它触发由小部件定义的事件的相应位置.通过这种方式,您可以确保相应地调用任何与ajax相关的事件.
| 归档时间: |
|
| 查看次数: |
2596 次 |
| 最近记录: |