Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
Javascript Jquery-无法在Chrome中自动插入破折号,即克隆后_Javascript_Jquery_Internet Explorer_Google Chrome_Firefox - Fatal编程技术网

Javascript Jquery-无法在Chrome中自动插入破折号,即克隆后

Javascript Jquery-无法在Chrome中自动插入破折号,即克隆后,javascript,jquery,internet-explorer,google-chrome,firefox,Javascript,Jquery,Internet Explorer,Google Chrome,Firefox,我是Jquery世界的新手,对下面的代码有问题。我希望你能让我知道我做错了什么 <script type="text/javascript"> $(document).ready(function () { $('#SocialSecurity').on('input', function () { var newNum = jQuery('#SocialSecurity'); if (newNum.val().

我是Jquery世界的新手,对下面的代码有问题。我希望你能让我知道我做错了什么

<script type="text/javascript">
    $(document).ready(function () {
        $('#SocialSecurity').on('input', function () {
            var newNum = jQuery('#SocialSecurity');
            if (newNum.val().contains("x")) {
                newNum.val("");
            }    newNum.clone().attr('alt','999-99-9999').insertAfter('#SocialSecurity').prev().remove();
            $('#SocialSecurity').focus();
        });
    });
</script>

$(文档).ready(函数(){
$(“#社会安全”)。on('input',function(){
var newNum=jQuery(“#社会安全”);
if(newNum.val()包含(“x”)){
newNum.val(“”);
}newNum.clone().attr('alt','999-99-9999')。insertAfter('#SocialSecurity')。prev().remove();
$(“#社会安全”).focus();
});
});
我遇到的问题是,我的应用程序在页面加载时有一个SSN框,出于安全原因,该框填充为xxx-xx-9999。但是,如果用户想要更新,我将尝试克隆该框,但将格式更改为999-99-9999

上面的代码在Firefox中运行良好,但在Chrome和所有版本中,即该字段不会自动插入SSN的破折号。这会导致身份验证失败

我在研究后尝试过的一些改变没有奏效

将attr()更改为prop() 将$更改为Javascript

我很感激你能给我的任何建议。如果我需要提供任何其他信息/代码,请告知我

您好,

请试试这个 演示:


我相信这就是你想要做的


你能提供一份工作吗?还有,你为什么要克隆、更新和替换原版,而不仅仅是更新原版?我不完全清楚我们为什么要克隆。这是我接管时的现有代码。我希望稍后能得到上级的答复。我会尽快发布任何更新。谢谢你的帮助!你能确切地说明你想要发生什么吗?初始显示为xxx-xx-9999(9是用户实际的最后4个)?您希望用户能够用数字替换x,但保留格式?是的。我们希望的是,最初的显示是xxx-xx-9999。如果用户需要更新该号码,他们将输入999-99-9999。然后,该框会将格式从xxx-xx-9999更改为999-99-9999。我相信这就是为什么我们要克隆并摧毁最初的盒子。页面加载后,我们无法更改框格式。当我在FF中运行时,这是按预期工作的,但不是在Chrome中,也就是说,为了补充前面的语句,我们可以在所有web浏览器中键入数字,但是FireFox是唯一读取attr('alt','999-99-9999')行并插入破折号的浏览器。其他浏览器只显示数字(999999999),谢谢大家的回复。我现在对JSFIDLE越来越熟悉了。脚本似乎正在进行输入更改,添加了所有9个。当我删除它们时,它仍然不会自动输入破折号。就是这样。感谢大家的帮助!这实际上也有助于解决另一个问题。@Forie25,出于好奇。。。这还有什么用?实际上是个人用的。我正在尝试创建一些简单的应用程序来帮助自己熟悉JS/Jquery。使用此脚本可以添加/更新ssn/dob/电话号码字段。
 $(document).ready(function () {
        $('#SocialSecurity').on('input', function () {
            var newNum = jQuery('#SocialSecurity');
            if (newNum.val().indexOf("x")) {
                newNum.val("");
            }    newNum.clone().val('999-99-9999').insertAfter('#SocialSecurity').prev().remove();
            $('#SocialSecurity').focus();
        });
    });
$(document).ready(function () {
     $('#SocialSecurity').on('input', function () {
         var $ss = $(this);
         var ssval = $ss.val();
         if (ssval.indexOf("x") > -1) {
             $ss.val("");
         } else {
             ssval = ssval.split(/\D+/g).join('');
             ssvals = ssval.match(/(\d{1,3})(?:(\d{1,2})(\d{1,4})?)?/);
             if (ssvals) {
                 ssvals.shift();
                 ssval = ssvals.filter(Boolean).join("-");
             }
             $ss.val(ssval);
         }
     });
 });