私はJSF1.2 jspページでjava-scriptを使用している1つのコードを持っています。しかし、DB からの値 (例 _ テキスト ボックスに「15」) がある場合、チェック ボックスのチェックを外すと、無効化されている JS コードを呼び出し、テキスト ボックスに「0.0」を割り当てると、「15」の保存をクリックすると保存されます。 DBで、DBで「0.0」が必要です(JSコードまたはイベントでBeanを更新しないことを意味します)。
これは要素 m が使用するものです
<f:subview id="PaymentRuleView" rendered="#{login.employee}">
<h:form enctype="multipart/form-data" id="PaymentRuleForm">
<x:div id="PaymentRuleDiv" styleClass="separateBox">
<h:selectBooleanCheckbox id="partReminder" onclick="hideText(id)" />
<h:outputText styleClass="separateMargin" value="For Part Payment" />
<h:inputText id="partReminderText"
value="#{SelectedBean.payment_1_reminder}"
size="3">
</h:inputText>
</x:div>
</h:form>
</f:subview>
そしてこれがJS_
<script type="text/javascript">
$(function(){
var txt="PaymentRuleView:PaymentRuleForm:";
var partTxt="partReminderText";
var finalTxt="finalReminderText";
if(document.getElementById(txt+partTxt).value>0)
{
document.getElementById(txt+"partReminder").checked=true;
document.getElementById(txt+partTxt).readOnly = false;
}else{
document.getElementById(txt+"partReminder").checked=false;
document.getElementById(txt+partTxt).readOnly= true;
document.getElementById(txt+partTxt).value = 0.0;
}
if(document.getElementById(txt+finalTxt).value>0 ){
document.getElementById(txt+"finalReminder").checked = true;
document.getElementById(txt+finalTxt).readOnly = false;
}else{
document.getElementById(txt+"finalReminder").checked=false;
document.getElementById(txt+finalTxt).readOnly = true;
document.getElementById(txt+finalTxt).value = 0.0;
}
});
<script type="text/javascript">
function hideText(e) {
var value = document.getElementById(e).value;
var textBox;
if (e.indexOf("partReminder") != -1) {
textBox = e.replace("partReminder", "partReminderText");
} else {
textBox = e.replace("finalReminder", "finalReminderText");
}
if (document.getElementById(e).checked!=true) {
document.getElementById(textBox).readOnly = true;
document.getElementById(textBox).value = 0.0;
}
if (document.getElementById(e).checked==true) {
document.getElementById(textBox).readOnly = false;
document.getElementById(textBox).value = 0.0;
}
}
</script>
仲間のアイデアや提案はどこに行きますか? ありがとうございました。
回答 変更された値を Bean に設定するのに役立つ "immediate=true" 属性を見逃していましたが、現在は次のようになっています_
<h:inputText id="partReminderText"
value="#{SelectedBean.payment_1_reminder}"
size="3" immediate="true">
</h:inputText>