0

これが私のHTMLコードです

<table>
  <tr>
     <th>
         Department Comments:
     </th>
     <td>
         <asp:TextBox ID="txtDepartmentComments" runat="server" Columns = "45" 
              TextMode = "MultiLine" CssClass = "txtComments" ></asp:TextBox>
         <asp:HiddenField ID = "hfDptComments" runat = "server" />

     </td>
     <td>
         <asp:Button ID="btnComplete" runat="server" Text="Completed" 
          CssClass = "button-save" />
     </td>
   </tr>
</table>

これが私のjqueryコードです

$('[id*="btnComplete"]').click(function () {
    var $val = $(this).closest('tr').find('[id*="txtDepartmentComments"]').val();
    var hfDptComments = $(this).closest('tr').find('[id*="hfDptComments"]');
    $(hfDptComments).prop('value', $val);

    alert($(hfDptComments).val());
});

これは、値がサーバーに送信されているかどうかをテストするための単なるダミーコードです。

protected void Page_Load(object sender, EventArgs e)
{
   string strDptComments = this.hfDptComments.Value;
}

何かを入力してアプリケーションを実行すると、JavaScriptボックスのメッセージに入力内容が表示されます。ただし、コードビハインドにブレークポイントを設定すると、常に空の文字列が返されます。

なぜですか?

助けてくれてありがとう

4

3 に答える 3

1

.val()代わりにを使用して値を設定してみてください

$(hfDptComments).val($val);
于 2013-02-15T17:43:42.697 に答える
0

これを使用してみてください:

hfDptComments.prop('value', $val);

hfDptComments.attr('value', $val);

hfDptComments.val($val);

hfDptCommentsそのすでにjqueryオブジェクト。これらのいずれかを試してください。

于 2013-02-15T17:55:30.237 に答える
0

javascript関数を通常(jQueryを介したイベントバインディングなしで)次のように記述します。

function SetMyValue() {
    var $val = $('#<%# btnComplete.ClientID %>').closest('tr').find('[id*="txtDepartmentComments"]').val();
    var hfDptComments = $(this).closest('tr').find('[id*="hfDptComments"]');
    $(hfDptComments).val($val);
}

OnclientClick次のように、ボタンのマークアップ(ポストバックする予定)に属性を設定します。

<asp:Button ID="btnComplete" runat="server" Text="Completed" OnClientClick="return SetMyValue();"
          CssClass = "button-save" />
于 2013-02-15T17:56:20.170 に答える