簡體   English   中英

從c#代碼隱藏中觸發jQuery函數/事件

[英]Trigger jQuery function / event from c# code-behind

我希望我能夠清楚地解釋我的問題。

場景:

帶有UpdatePanel的Asp.net網頁。 控件的某些屬性可以通過UI觸發器更改,並在jQuery中設置(為了更快的響應,因為此頁面預計接受每天至少500條記錄的輸入數據)。

下面的例子,(如果用c#代碼編寫,邏輯如下: txtIDNumber.Enabled = chkIsReceiptRequired.Checked; rfvIDNumber.Enabled = chkIsReceiptRequired.Checked; ):

標記:

<asp:CheckBox ID="chkReceiptRequired" runat="server" Text="Receipt required" />
<asp:TextBox runat="server" ID="txtIDNumber" Width="150px" style="float: left;" />
<asp:RequiredFieldValidator ID="rfvIDNumber" runat="server" ForeColor="Red" 
     ErrorMessage="Enter ID No." ControlToValidate="txtIDNumber" ValidationGroup="save" />

默認jQuery代碼的片段(在頁面加載時,未選中chkReceiptRequired,僅在勾選chkReceiptRequired時啟用驗證器和文本框):

<script type="text/javascript">
    function pageLoad(){
        $('input[id$=_txtIDNumber]').prop('disabled', true);
        ValidatorEnable($("[id$='rfvIDNumber']")[0], false);

        $('input[id$=_chkReceiptRequired]').change(function () {
            $('input[id$=_txtIDNumber]').prop('disabled', !$(this).is(':checked'));
            $('input[id$=_txtIDNumber]').val(!$(this).is(':checked') ? '' : $('input[id$=_txtIDNumber]').val());
            ValidatorEnable($("[id$='rfvIDNumber']")[0], $(this).is(':checked'));
        });
    }
</script>

我正在使用同一頁面在此處加載數據以執行記錄更新。 數據加載的代碼段:

var maintableComponent = new MainTableComponent();
var maintableData = maintableComponent.GetMainTableDataById(rowId);

chkReceiptRequired.Checked = maintableData.IsReceiptRequired.Value;
txtIDNumber.Text = maintableData.IDNumber;
//todo: enable txtIDNumber and rfvIDNumber from here

問題:右邊,在頁面渲染更新時,因為選中了chkReceiptRequired,所以應該啟用txtIDNumber。 但我的問題是,事實並非如此。 在從代碼隱藏加載數據時,我該怎么做才能啟用txtIDNumber和rfvIDNumber?

*我已經嘗試此鏈接 ,但它似乎並沒有工作。

拜托,請幫幫我。 我在這里發布的片段只是我迫切需要解決的許多jQuery驗證之一。 提前致謝。

現在感覺非常愚蠢。 弄清楚睡覺后如何解決它。 :P

我剛剛將默認的jQuery代碼更改為:

var isReceiptRequired = $('input[id$=_chkReceiptRequired]').is(':checked');

$('input[id$=_txtIDNumber]').prop('disabled', !isReceiptRequired);
ValidatorEnable($("[id$='rfvIDNumber']")[0], isReceiptRequired);

我只記得頁面循環中的最后一件事是在頁面上渲染它,因此jQuery可以通過代碼隱藏控件中設置的值進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM