2015-06-23 4 views
0

Я пытаюсь заменить символ евро символом стерлинга, используя метод .replace. К сожалению, он не с , &euro и \u20AC и с экранированными версиями.Javascript .replace on Euro symbol (специальные символы)

Я что-то упустил или заменен неспособным обрабатывать специальные символы?

function updateCurrency(elem){ 
    if(elem.value === 'sterling'){ 
     window.currency= '£'; 
     minValue= document.getElementById('min').value; 
     minValue= minValue.replace('/€', '£'); 
     console.log(minValue) 
     maxValue= document.getElementById('max').value.replace('\u20AC', '£'); 
    } else { 
     window.currency= '\u20AC'; 
     minValue= document.getElementById('min').value.replace('£', '\u20AC'); 
     maxValue= document.getElementById('max').value.replace('£', '\u20AC'); 
    } 

} 

codepen: http://codepen.io/ambrosedheffernan/pen/PqOmMG

+0

Вы забыли для определения некоторых функций javascript в кодедексе (updateMinValue, updateMaxValue). – sergioFC

+0

Вы вычислили значение и выполните замену в строке, но забыли обновить значение. Что-то вроде 'document.getElementById ('min'). Value = minValue' – sergioFC

+0

@sergioFC, что было бы следующим шагом, но« minValue = € xxxx »после замены (это значение, которое предупреждается в кодефене). .it нечетно, что ни один из кодов не работает, 'charCodeAt()' дает 8264, который тоже не работает, к счастью, я могу просто использовать подстроку, чтобы удалить персонажа, но не оставляйте это на случай, если кто-нибудь сможет ответить на него. – David

ответ

1

Просто изменить вашу функцию updateCurrency для этого проще один, и вы увидите, что и £ заменены (при переключении между currencys):

function updateCurrency(elem){ 
    if(elem.value === 'sterling'){ 
     var newCurrency = '£'; 
     var oldCurrency = '€'; 
    } 
    else { 
     var newCurrency = '€'; 
     var oldCurrency = '£';   
    } 

    var maxValue = document.getElementById('max').value; 
    maxValue = maxValue.replace(oldCurrency, newCurrency) 
    document.getElementById('max').value = maxValue; 

    var minValue = document.getElementById('min').value; 
    minValue = minValue.replace(oldCurrency, newCurrency) 
    document.getElementById('min').value = minValue; 
} 
+0

hmm работает в кодовой ручке, но не работает на моем сервере debian, плохо смотрю на это позже в течение недели, но спасибо за помощь, по крайней мере, я знаю, что это не проблема с браузером! – David

+0

Это странно, я не думаю, что есть что-то особенное с этими особыми персонажами, я думаю, что он должен работать везде. Пожалуйста, дайте мне знать, когда у вас будет больше информации. – sergioFC

+1

интересный titbit, по-видимому, браузеры игнорируют объявления charset в тегах html, вам нужно изменить http charset, чтобы на самом деле заставить кодировку ANSI работать, а затем ваш код работает отлично (а также позволяет использовать символ E). Я использовал php ' header() 'для изменения, если это кому-то помогает. – David