带有UpdatePanel的jQuery的Masked Input插件

时间:2011-03-21 19:12:20

标签: jquery asp.net jquery-plugins updatepanel mask

我的问题是:在我的代码调用服务器并且它返回我需要的更改后,我的掩码消失了。 (这只发生在更新面板内的掩码中)

PS:我试着用我的html代码链接数据,但我无法做到。

所以只是为了展示意识形态:

<ScriptManager>
    <UpdatePanel>
    <ContentTemplate>
        <Table>
            <asp:TextBox runat="server" ID="txtCnpj" CssClass="cnpj_m" MaxLength="50"/>
        </Table>
    </ContentTemplate>
    </UpdatePanel>
</ScriptManager>

在我的代码隐藏中,我只是隐藏并显示一些项目。 (这是一个ascx控件),我的javascript是这样的:


$(function () {
    $(".data_m").mask("99/99/9999");
    $(".telefone_m").mask("9999-9999");
    $(".dddtelefone_m").mask("(999) 9999-9999");
    $(".ddd_m").mask("(999)");
    $(".cep_m").mask("99999-999");
    $(".cpf_m").mask("999.999.999-99");
    $(".cnpj_m").mask("99.999.999/9999-99");
});

我正在使用jQuery 1.5.1。

插件Masked Input Plugin from digitalBush

任何人都知道如何解决这个问题?

PS2:我的面具在我启动页面时工作,只在我打电话给服务器后停止。

编辑:

这是我在加载后尝试更新的方式。



$(".rbToggle").live('change',function () {
    //$("#txtCpf").mask("999.999.999-99");
    //$("#txtCnpj").mask("99.999.999/9999-99");
    // Edit, i'm using the code below, i put the top as sample, but i guess it may be kind hard to ppl see this sometimes.
    $("#%= txtCpf.ClientID %>").mask("999.999.999-99");
    $("#%= txtCnpj.ClientID %>").mask("99.999.999/9999-99");
});

EDIT2:我忘了提到没有updatepanel,掩码和javascript工作是完美的

2 个答案:

答案 0 :(得分:5)

每次重新呈现内容时都需要激活蒙版。因此,当更新面板重新加载时,再次激活掩码。

您可以通过pageLoaded javascript methodRegisterStartupScript或将激活javascript置于局部视图中来执行此操作。

例如:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(function(){
    // global partial postback complete
    // add masks here
});

答案 1 :(得分:0)

我已将遮罩绑定放入 pageLoad 函数

<script type="text/javascript">
 function pageLoad() {
     $('.decimal_right').inputmask('decimal', {
         rightalign: true,
         allowminus: false
     });
 }
</script>