jQuery代码在jsFiddle中工作,但不在我的网站上

时间:2011-11-28 13:33:08

标签: jquery

我为登录编写了一个脚本,通过连接第一个+姓氏(模糊),删除空格和删除特殊字符来创建用户名。

在jsFiddle中一切正常,但在我的网站上没有 - 我得到3次错误'$ str'没有定义 - 所以我的猜测是第5 + 10行的替换功能没有被触发。

任何想法有什么不对?

http://jsfiddle.net/Hxjyy/2/

代码:

jQuery().ready(function() {
    jQuery('#firstname').blur(function() {
        var $login = jQuery('#firstname').val().toLowerCase()+jQuery('#firstname').val().toLowerCase();
        $login = $login.replace(/\s/g, "");  
        $login = replaceChars($login);
        jQuery("#login").val($login);
    });
    jQuery('#lastname').blur(function() {
        var $login = jQuery('#firstname').val().toLowerCase()+jQuery('#lastname').val().toLowerCase();
        $login = $login.replace(/\s/g, "");  
        $login = replaceChars ($login);
        jQuery("#login").val($login);
    });

    function replaceChars($str)
        {
        var charMap = {
            é:'e',è:'e',ë:'e',ê:'e',à:'a',
            ç:'c',á:'a',ö:'o'
        };
        var str_array = $str.split('');

        for( var i = 0, len = str_array.length; i < len; i++ ) {
            str_array[ i ] = charMap[ str_array[ i ] ] || str_array[ i ];
        }
        $str= str_array.join('');
        return($str);
    }
});

2 个答案:

答案 0 :(得分:0)

编辑 - 好的,现在它更有意义,你尝试过(和之前)$(文件).ready()之外的功能吗?我有时候会遇到问题。你应该写jQuery(document).ready()

      function replaceChars($str)
      {
        var charMap = {
            é:'e',è:'e',ë:'e',ê:'e',à:'a',
            ç:'c',á:'a',ö:'o'
        };
        var str_array = $str.split('');

        for( var i = 0, len = str_array.length; i < len; i++ ) {
            str_array[ i ] = charMap[ str_array[ i ] ] || str_array[ i ];
        }
        $str= str_array.join('');
        return($str);
      }


jQuery(document).ready(function() {
    jQuery('#firstname').blur(function() {
        var $login = jQuery('#firstname').val().toLowerCase()+jQuery('#firstname').val().toLowerCase();
        $login = $login.replace(/\s/g, "");  
        $login = replaceChars($login);
        jQuery("#login").val($login);
    });
    jQuery('#lastname').blur(function() {
        var $login = jQuery('#firstname').val().toLowerCase()+jQuery('#lastname').val().toLowerCase();
        $login = $login.replace(/\s/g, "");  
        $login = replaceChars ($login);
        jQuery("#login").val($login);
    });

});

答案 1 :(得分:0)

我刚刚发现问题是由replaceChars函数中的特殊字符引起的 - 如果我将它们替换为像\ u00EB这样的Javascript实体,它可以正常工作......