我为登录编写了一个脚本,通过连接第一个+姓氏(模糊),删除空格和删除特殊字符来创建用户名。
在jsFiddle中一切正常,但在我的网站上没有 - 我得到3次错误'$ str'没有定义 - 所以我的猜测是第5 + 10行的替换功能没有被触发。
任何想法有什么不对?
代码:
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);
}
});
答案 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实体,它可以正常工作......