1

Java スクリプト

function outputtax() 
 { 
 var tamount = parseFloat(document.getElementById('<%=txtpsubtotal.ClientID%>').value);
 var cash = parseFloat(document.getElementById('<%=txtpdiscount.ClientID%>').value);

 if (isNaN(tamount) != true && isNaN(cash) != true && isNaN(tax) != true)
  {
    document.getElementById('<%=txtPtotalamout.ClientID%>').value =
       Math.round(parseFloat(document.getElementById('<%=txtpsubtotal.ClientID%>').value)
  - parseFloat(document.getElementById('<%=txtpdiscount.ClientID%>').value))              
      return false;
    }

  }

<asp:TextBox ID="txtPtotalamout" runat="server" ReadOnly="true">
                                          </asp:TextBox>

.CS

objsupplyPL.totalamount = Convert.ToDouble(txtPtotalamout.Text.ToString());

テキストボックスに値が表示されていますが、保存ボタン txtptotalamountを クリックすると値が表示されます。null配置すると正常にreadonly="false"動作します。

4

2 に答える 2

2

「txtPtotalamout」からの結果を保存できるようにしたいが、編集可能にしたくない。

あなたはただ使うことができます

<div id="PTotalAmount"><asp:Label id="PTotalAmount" runat="server" /></div>
<asp:HiddenField ID="hPTotalAmount" runat="server" />

それを表示するには、その DIV の内容と JavaScript の非表示フィールドを更新します。

次に、フォームをロードする (および非表示フィールドに入力する) ときに、その DIV に合計金額を表示できます。必要に応じて、DIV をテキスト ボックスのようにフォーマットすることもできます。

于 2013-09-13T15:48:34.157 に答える
2

http://codecorner.galanter.net/2009/10/09/postback-disabled-textbox/より

ASP.NET アプリケーションで、TextBox コントロールのプロパティ ReadOnly を True (または Enabled を False) に設定して、ユーザーがデータを直接入力できないようにするとします。ただし、クライアント側の JavaScript を介してテキスト ボックスの値を更新する必要があります。何が起こっているのか、値を更新できます。しかし、サーバーへのポストバック中 – 驚き、驚き! – 新しい値は保持されません。これは、セキュリティ上の予防措置によるものです。値が変更されることを意図していない場合、変更は許可されません。しかし、これを回避する方法があります。

秘訣は、それらの動作を維持ReadOnly = FalseEnabled = True、シミュレートすることです。サーバー側のコードに次の行を追加します。

TextBox1.Attributes["onclick"] = "this.blur();"

ここで、TextBox1 はテキスト ボックス コントロールです。この行が行うことは、クライアント側の動作をテキスト ボックスに追加することです。ユーザーがテキストボックスをクリックしようとするとすぐにフォーカスが失われ、ユーザーがデータを入力できなくなり、テキストボックスが基本的に読み取り専用になります。さらに効果を高めるために、texbox の背景を「LightGray」のようなものに設定して、無効に見えるようにすることができます。

于 2013-09-13T15:53:04.170 に答える