Предполагается, что вы говорите о попытке заменить "и" на умные кавычки автоматически: это не обязательно хорошая идея. Алгоритмы выбора правильного способа обращения к кавычкам хрупки и их легко обмануть. формула, связанная с просмотром символа перед кавычкой, который используется такими программами, как Office. Но они часто допускают ошибки, оставляя текст хуже, чем если бы он не пробовал. Иногда, конечно, вы не хотите умные цитаты вообще (особенно на таком сайте, где мы говорим код).
Если вам удобнее набирать текст, попробуйте установить раскладку клавиатуры, которая позволяет вводить умные кавычки прямо и явно.
Тем не менее, если хотите, вот код для начала ...
<textarea id="foo" rows="6" cols="40"></textarea>
...
function AutoReplacer(element) {
// List of replacement rules. Note currently with this simplistic code
// replacements should be the same length as the original text.
//
replacements= [
[' "', ' \u201C'],
['("', ' \u201C'],
['"', '\u201D']
];
// Only attempt to use replacer behaviour if we can retain the cursor
// position. Setting value by default moves the cursor to the end of the
// input, which is too irritating.
//
if (getInputSelection(element)!==null) {
element.onkeyup= function() {
value= element.value;
for (var i= 0; i<replacements.length; i++) {
value= value.split(replacements[i][0]).join(replacements[i][1]);
}
if (value!=element.value) {
var s= getInputSelection(element);
element.value= value;
setInputSelection(element, s);
}
};
}
}
// Cross-browser (as much as possible anyway) cursor positioning
//
function getInputSelection(element) {
if (element.selectionStart!==window.undefined) {
return [element.selectionStart, element.selectionEnd];
} else if (document.selection) {
var BIG= 1000000;
var range= document.selection.createRange();
if (range.moveStart===window.undefined)
return [0, 0];
var start= -range.moveStart('character', -BIG);
var end= -range.moveEnd('character', -BIG);
return [start-1, end-1];
} else return null;
}
function setInputSelection(element, s) {
if (element.selectionStart!==window.undefined) {
element.selectionStart= s[0];
element.selectionEnd= s[1];
} else if (document.selection) {
var range= element.createTextRange();
range.collapse(true);
range.moveEnd('character', s[1]);
range.moveStart('character', s[0]);
range.select();
}
}
new AutoReplacer(document.getElementById('foo'));