【问题标题】:Trigger jQuery function / event from c# code-behind从 c# 代码隐藏触发 jQuery 函数/事件
【发布时间】:2015-02-21 16:20:25
【问题描述】:

我希望我能清楚地解释我的问题。

场景:

带有 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>

我正在使用同一页面在此处加载数据以执行记录更新。数据加载代码sn-p:

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?

*我已经尝试过link 和this,但它似乎不起作用。

请,请帮助我。我在这里发布的 sn-ps 只是我迫切需要解决的许多 jQuery 验证之一。提前致谢。

【问题讨论】:

  • 您能否截取您网站中应该检查的内容?它可能有助于我们更好地了解您的问题(:
  • 另一个问题:你试过简单吗 txtIDNumber.Checked=true;在代码隐藏中?
  • 是的。我包含了上面的代码。谢谢,我设法弄清楚了。 :)

标签: javascript c# jquery asp.net


【解决方案1】:

现在感觉非常愚蠢。睡觉后想办法解决它。 :P

我只是将默认的 jQuery 代码更改为:

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

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

我只记得页面循环中的最后一件事是在页面上呈现它,以便可以通过代码隐藏控件中设置的值来操作 jQuery。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多