fix typing on ie8
This commit is contained in:
parent
3565a06191
commit
d11b01c313
1 changed files with 42 additions and 18 deletions
|
|
@ -88,16 +88,37 @@ var TextInput = function(parentNode, host) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (useragent.isOldIE) {
|
if (useragent.isOldIE) {
|
||||||
event.addListener(text, "propertychange", function(e){
|
var propchangeTimeout;
|
||||||
if (text.value != "" && text.value != PLACEHOLDER)
|
var propertyChangeCounter = 0;
|
||||||
onInput(e);
|
var onPropertyChange = function(e){
|
||||||
|
if (propertyChangeCounter)
|
||||||
|
return;
|
||||||
|
var data = text.value;
|
||||||
|
if (inCompostion || !data || data == PLACEHOLDER)
|
||||||
|
return;
|
||||||
|
// can happen either after delete or during insert operation
|
||||||
|
if (e && data == PLACEHOLDER[0]) {
|
||||||
|
if (!propchangeTimeout) {
|
||||||
|
propchangeTimeout = setTimeout(function() {
|
||||||
|
onPropertyChange();
|
||||||
|
propchangeTimeout = null;
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendText(data);
|
||||||
|
propertyChangeCounter++
|
||||||
|
resetValue();
|
||||||
|
propertyChangeCounter--
|
||||||
|
}
|
||||||
|
event.addListener(text, "propertychange", onPropertyChange);
|
||||||
|
|
||||||
var keytable = { 13:1, 27:1 };
|
var keytable = { 13:1, 27:1 };
|
||||||
event.addListener(text, "keyup", function (e) {
|
event.addListener(text, "keyup", function (e) {
|
||||||
if (inCompostion && (!text.value || keytable[e.keyCode]))
|
if (inCompostion && (!text.value || keytable[e.keyCode]))
|
||||||
setTimeout(onCompositionEnd, 0);
|
setTimeout(onCompositionEnd, 0);
|
||||||
if ((text.value.charCodeAt(0)|0) < 129) {
|
if ((text.value.charCodeAt(0)||0) < 129) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
inCompostion ? onCompositionUpdate() : onCompositionStart();
|
inCompostion ? onCompositionUpdate() : onCompositionStart();
|
||||||
|
|
@ -147,12 +168,7 @@ var TextInput = function(parentNode, host) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var onInput = function(e) {
|
var sendText = function(data) {
|
||||||
if (inCompostion)
|
|
||||||
return;
|
|
||||||
var data = text.value;
|
|
||||||
resetValue();
|
|
||||||
|
|
||||||
if (pasted) {
|
if (pasted) {
|
||||||
resetSelection();
|
resetSelection();
|
||||||
if (data)
|
if (data)
|
||||||
|
|
@ -165,15 +181,23 @@ var TextInput = function(parentNode, host) {
|
||||||
data = data.substr(2);
|
data = data.substr(2);
|
||||||
else if (data[0] == PLACEHOLDER[0])
|
else if (data[0] == PLACEHOLDER[0])
|
||||||
data = data.substr(1);
|
data = data.substr(1);
|
||||||
|
else if (data[data.length - 1] == PLACEHOLDER[0])
|
||||||
if (data) {
|
data = data.slice(0, -1);
|
||||||
// can happen if undo in textarea isn't stopped
|
// can happen if undo in textarea isn't stopped
|
||||||
if (data[data.length - 1] == PLACEHOLDER[0])
|
if (data[data.length - 1] == PLACEHOLDER[0])
|
||||||
data = data.slice(0, -1);
|
data = data.slice(0, -1);
|
||||||
|
|
||||||
if (data)
|
if (data)
|
||||||
host.onTextInput(data);
|
host.onTextInput(data);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
var onInput = function(e) {
|
||||||
|
if (inCompostion)
|
||||||
|
return;
|
||||||
|
var data = text.value;
|
||||||
|
resetValue();
|
||||||
|
|
||||||
|
sendText(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
var onCompositionStart = function(e) {
|
var onCompositionStart = function(e) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue