Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery掩码输入和表单重置_Jquery_Maskedinput - Fatal编程技术网

jQuery掩码输入和表单重置

jQuery掩码输入和表单重置,jquery,maskedinput,Jquery,Maskedinput,我正在使用Josh Bush()为jQuery编写的屏蔽输入插件 在ZipCode和电话号码字段的典型地址输入表单上 当我在表单中显示记录并在相关字段上设置inputmask时,表单最初显示格式化的zip(99999-9999)和电话号码(999)999-9999 但是,当我发出表单重置时,inputmask格式消失,剩下的是zip和phone的原始字段值999999999和9999999999 字段在接收到焦点时确实会正确格式化,但我希望在重置后立即正确格式化 你知道如何让它与通用解决方案一起

我正在使用Josh Bush()为jQuery编写的屏蔽输入插件 在ZipCode和电话号码字段的典型地址输入表单上

当我在表单中显示记录并在相关字段上设置inputmask时,表单最初显示格式化的zip(99999-9999)和电话号码(999)999-9999

但是,当我发出表单重置时,inputmask格式消失,剩下的是zip和phone的原始字段值999999999和9999999999

字段在接收到焦点时确实会正确格式化,但我希望在重置后立即正确格式化

你知道如何让它与通用解决方案一起工作,而不必在表单上的所有字段中循环使用焦点吗

我考虑过在适当的字段中添加一个“data inputmask”属性,并调用一个通用函数,该函数在表单加载时使用该属性来建立inputmask,但这个示例简化了我实际维护的代码,并且访问项目中inputmask的每一次使用都是不可行的

以下是表单和脚本的简化版本:

<form action="/User/UpdateAddress" id="AddEditAddress" method="post" novalidate="novalidate">
    <input id="AddressId" name="AddressId" type="hidden" value="A5A715C7-C5DD-4793-A3D8-CE101F83224B" />
    <label for="FirstName" title="First Name">First Name</label>
    <input id="FirstName" name="FirstName" type="text" value="John" />
    <label for="LastName" title="Last Name">Last Name</label>
    <input id="LastName" name="LastName" type="text" value="Doe" />
    <label for="Address1" title="Address 1">Address 1</label>
    <input id="Address1" name="Address1" type="text" value="123 Main St" />
    <label for="Address2" title="Address 2">Address 2</label>
    <input id="Address2" name="Address2" type="text" value="Apartment 123" />
    <label for="City" title="City">City</label>
    <input id="City" name="City" type="text" value="Anytown" />
    <label for="State" title="State">State</label>
    <input id="State" name="State" type="text" value="PA" />
    <label for="ZipCode" title="Zip Code">Zip Code</label>
    <input id="ZipCode" name="ZipCode" type="text" value="191234567" />
    <label for="Phone" title="Phone">Phone</label>
    <input id="Phone" name="Phone" type="text" value="2155551234" />        
</form>
<button id="FormReset">Reset</button>
<button id="FormSubmit">Submit</button>
<script type="text/javascript">
    $("input#ZipCode").inputmask("99999-9999");
    $("input#Phone").inputmask("(999)999-9999");
    $("button#FormReset").on("click", function(){
        $("form#AddEditAddress")[0].reset();
    });
    $("button#FormSubmit").on("click", function(){
        $("form#AddEditAddress")[0].submit();
    });
</script>

名字
姓
地址1
地址2
城市
陈述
邮政编码
电话
重置
提交
$(“输入#ZipCode”).inputmask(“99999-9999”);
$(“输入电话”).inputmask(“(999)999-9999”);
$(“按钮#表单重置”)。在(“单击”,函数()上){
$(“表单#AddEditAddress”)[0]。重置();
});
$(“按钮#表单提交”)。在(“单击”,函数()上){
$(“表单#AddEditAddress”)[0]。提交();
});

为什么不在单击重置按钮后立即尝试重新分配输入掩码

$("button#FormReset").on("click", function(){
        $("form#AddEditAddress")[0].reset();
        $("input#ZipCode").unmask().inputmask("99999-9999");
        $("input#Phone").unmask().inputmask("(999)999-9999");
});

注意:我使用jQuery扩展方法“inputmask”而不是库中的“mask”方法,因为它与另一个库存在名称冲突。重命名的是同一个方法。如果我事先知道应用了输入掩码的字段,类似的方法可能会起作用。我正在寻找一种方法,通过传递一个表单来实现这一点:function($form){$form[0]。reset();};