代码之家  ›  专栏  ›  技术社区  ›  Jake Wharton

使用jQuery/meioMask提交无掩码表单值

  •  2
  • Jake Wharton  · 技术社区  · 16 年前

    我将SSN等字段的输入屏蔽为在显示时包含破折号,但希望提交的值仅为数字。

    例如,我的SSN格式如下:

    <input type="text" name="ssn" alt="999-999-9999"/>
    

    输入“1234567890”后,我得到了格式良好的输出。

    123-456-7890
    

    现在我只想把数字作为“1234567890”提交。这容易做到吗?

    供参考: http://www.meiocodigo.com/projects/meiomask/

    3 回复  |  直到 16 年前
        1
  •  4
  •   Oscar Kilhed    16 年前

    这可能会解决你的问题。不过很快就脏了。它只是删除带有正则表达式的“-”符号,并将其吐出到一个隐藏字段中,然后提交。

    <input type="text" id="ssnMasked" />
    <input type="hidden" id="ssn" name="ssn" />
    <input type="button" value="Submit" onclick="RemoveMaskAndSubmit()"/>
    
    <script type="text/javascript">
        function RemoveMaskAndSubmit() {
            $('#ssn').val($('#ssnMasked').val().replace(/\-/g,''));
            $('#formId').submit();
        }
    </script>
    
        2
  •  2
  •   Jake Wharton    16 年前

    我不确定回答我自己的问题是否合乎礼仪,但实际上我使用了一个相当简单的解决方案,该解决方案源自你的两个答案。

    在使用Struts框架及其自动表单处理和特殊JSP表单标记的站点上使用隐藏字段会产生问题。我会更改后端以在那里执行所有处理,但由于现在是中午,我无法重新启动Tomcat服务器以加载更改,而不会在短时间内破坏操作。

    在提交时,我调用一个函数 UnmaskMaskedValue()

    function UnmaskMaskedValue() {
      $('#ssn').setMask('9999999999');
    }
    

    这会在提交任何数据以使其在后端有效之前更改值。

    我很感激你的两个建议,如果我能的话,我会给你打分的。

        3
  •  1
  •   Elzo Valugi    16 年前

    看起来这个选项是正确的 deprecated .

    <a onclick="jQuery('#unmasked_string').html( jQuery('#unmasked_input').unmaskedVal() );return false;" href="#">Get the unmasked value from the input</a>