【问题标题】:SelectOneRadio and Disable inputTextSelectOneRadio 并禁用 inputText
【发布时间】:2012-05-04 11:30:43
【问题描述】:
这是我的 html 代码。
<table >
<tr>
<th rowspan="3">
<h:selectOneRadio layout="pageDirection"
onClick="alert('selam')" id="selectOneRadio">
<f:selectItem itemValue="Categori" itemLabel="Radio 1" />
<f:selectItem itemValue="Service" itemLabel="Radio 2" />
<f:selectItem itemValue="Follower" itemLabel="Radio 3" />
</h:selectOneRadio>
</th>
<td>
<h:inputText value="inputText 1" />
</td>
</tr>
<tr>
<td>
<h:inputText value="inputText 2" />
</td>
</tr>
<tr>
<td>
<h:inputText value="inputText 3" />
</td>
</tr>
</table>
我想选择其中一个单选按钮。当我单击其中一个时,我希望禁用 inputText。
例如:
- 如果我点击 Radio 1 ,那么输入 Text 1 将被禁用。
- 如果我点击 Radio 2 ,那么输入 Text 2 将被禁用。
- İ如果我单击 Radio 3 ,则输入 Text 3 将被禁用。
我该怎么做?
【问题讨论】:
标签:
html
jsf
jsf-2
facelets
【解决方案1】:
将单选按钮值绑定到托管 bean 属性,并使用 <f:ajax> 发送 ajax 请求并在单选按钮更改时更新部分视图,并使用 disabled 属性禁用 <h:inputText>,具体取决于所选单选按钮项目值。
例如
<h:panelGroup id="inputs">
<table>
<tr>
<th rowspan="3">
<h:selectOneRadio value="#{bean.radio}" layout="pageDirection">
<f:selectItem itemValue="Categori" itemLabel="Radio 1" />
<f:selectItem itemValue="Service" itemLabel="Radio 2" />
<f:selectItem itemValue="Follower" itemLabel="Radio 3" />
<f:ajax render="inputs" />
</h:selectOneRadio>
</th>
<td>
<h:inputText value="#{bean.input1}" disabled="#{bean.radio == 'Categori'}" />
</td>
</tr>
<tr>
<td>
<h:inputText value="#{bean.input2}" disabled="#{bean.radio == 'Service'}" />
</td>
</tr>
<tr>
<td>
<h:inputText value="#{bean.input3}" disabled="#{bean.radio == 'Follower'}" />
</td>
</tr>
</table>
</h:panelGroup>
与
@ManagedBean
@ViewScoped
public class Bean {
private String radio;
private String input1;
private String input2;
private String input3;
// ...
}
【解决方案2】:
看看这个,我想这就是你要找的东西
<html>
<head>
<script type="text/javascript">
function enable_area(opt)
{
//get the required document element and disable corresponding element.
document.form.textarea1.disabled = (opt == 'Categori' ? true : false);
document.form.textarea2.disabled = (opt == 'service' ? true : false);
document.form.textarea3.disabled = (opt == 'Follower' ? true : false);
}
</script>
</head>
<body>
<form action="" method="post" name="form">
<!--Pass the value field as selector when clicked on radio button-->
Radio1 <input type="radio" name="radio" value="Categori" onclick="enable_area(this.value);" />
<textarea name="textarea1"></textarea>
<br />
Radio2 <input type="radio" name="radio" value="service" onclick="enable_area(this.value);" />
<textarea name="textarea2"></textarea>
<br />
Radio3 <input type="radio" name="radio" value="Follower" onclick="enable_area(this.value);" />
<textarea name="textarea3"></textarea>
</form>
</body>
</html>