more text bind issues
This commit is contained in:
parent
bc1c1f7bcf
commit
00458bab58
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -45,10 +45,10 @@ window.onload = function(){
|
|||||||
for(var i=0; i<events.length; i++){
|
for(var i=0; i<events.length; i++){
|
||||||
var event = events[i];
|
var event = events[i];
|
||||||
if(event.name === "textfield" && event.type !== "delete"){
|
if(event.name === "textfield" && event.type !== "delete"){
|
||||||
yatta.val("textfield").bind(textbox);
|
//yatta.val("textfield").bind(textbox);
|
||||||
yatta.val("textfield").bind(document.querySelector("h1"))
|
yatta.val("textfield").bind(document.querySelector("h1"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
yatta.val("textfield","", "mutable");
|
yatta.val("textfield","stuff", "mutable");
|
||||||
};
|
};
|
@ -285,6 +285,7 @@ module.exports = (HB)->
|
|||||||
for t in @textfields
|
for t in @textfields
|
||||||
if t is textfield
|
if t is textfield
|
||||||
return
|
return
|
||||||
|
creator_token = false;
|
||||||
|
|
||||||
word = @
|
word = @
|
||||||
textfield.value = @val()
|
textfield.value = @val()
|
||||||
@ -303,7 +304,9 @@ module.exports = (HB)->
|
|||||||
}
|
}
|
||||||
|
|
||||||
writeRange = (range)->
|
writeRange = (range)->
|
||||||
|
writeContent word.val()
|
||||||
textfield.setSelectionRange range.left, range.right
|
textfield.setSelectionRange range.left, range.right
|
||||||
|
|
||||||
writeContent = (content)->
|
writeContent = (content)->
|
||||||
textfield.value = content
|
textfield.value = content
|
||||||
else
|
else
|
||||||
@ -322,8 +325,15 @@ module.exports = (HB)->
|
|||||||
}
|
}
|
||||||
|
|
||||||
writeRange = (range)->
|
writeRange = (range)->
|
||||||
|
writeContent word.val()
|
||||||
textnode = textfield.childNodes[0]
|
textnode = textfield.childNodes[0]
|
||||||
if range.isReal and textnode?
|
if range.isReal and textnode?
|
||||||
|
if range.left < 0
|
||||||
|
range.left = 0
|
||||||
|
range.right = Math.max range.left, range.right
|
||||||
|
if range.right > textnode.length
|
||||||
|
range.right = textnode.length
|
||||||
|
range.left = Math.min range.left, range.right
|
||||||
r = new Range()
|
r = new Range()
|
||||||
r.setStart(textnode, range.left)
|
r.setStart(textnode, range.left)
|
||||||
r.setEnd(textnode, range.right)
|
r.setEnd(textnode, range.right)
|
||||||
@ -342,6 +352,7 @@ module.exports = (HB)->
|
|||||||
|
|
||||||
@observe (events)->
|
@observe (events)->
|
||||||
for event in events
|
for event in events
|
||||||
|
if not creator_token
|
||||||
if event.type is "insert"
|
if event.type is "insert"
|
||||||
o_pos = event.position
|
o_pos = event.position
|
||||||
fix = (cursor)->
|
fix = (cursor)->
|
||||||
@ -351,7 +362,6 @@ module.exports = (HB)->
|
|||||||
cursor += 1
|
cursor += 1
|
||||||
cursor
|
cursor
|
||||||
r = createRange fix
|
r = createRange fix
|
||||||
writeContent word.val()
|
|
||||||
writeRange r
|
writeRange r
|
||||||
|
|
||||||
else if event.type is "delete"
|
else if event.type is "delete"
|
||||||
@ -363,11 +373,11 @@ module.exports = (HB)->
|
|||||||
cursor -= 1
|
cursor -= 1
|
||||||
cursor
|
cursor
|
||||||
r = createRange fix
|
r = createRange fix
|
||||||
writeContent word.val()
|
|
||||||
writeRange r
|
writeRange r
|
||||||
|
|
||||||
# consume all text-insert changes.
|
# consume all text-insert changes.
|
||||||
textfield.onkeypress = (event)->
|
textfield.onkeypress = (event)->
|
||||||
|
creator_token = true
|
||||||
if word.is_deleted
|
if word.is_deleted
|
||||||
# if word is deleted, do not do anything ever again
|
# if word is deleted, do not do anything ever again
|
||||||
textfield.onkeypress = null
|
textfield.onkeypress = null
|
||||||
@ -394,6 +404,7 @@ module.exports = (HB)->
|
|||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
else
|
else
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
creator_token = false
|
||||||
|
|
||||||
textfield.onpaste = (event)->
|
textfield.onpaste = (event)->
|
||||||
if word.is_deleted
|
if word.is_deleted
|
||||||
@ -416,6 +427,7 @@ module.exports = (HB)->
|
|||||||
# Every browser supports keyCode. Let's stick with it for now..
|
# Every browser supports keyCode. Let's stick with it for now..
|
||||||
#
|
#
|
||||||
textfield.onkeydown = (event)->
|
textfield.onkeydown = (event)->
|
||||||
|
creator_token = true
|
||||||
if word.is_deleted
|
if word.is_deleted
|
||||||
# if word is deleted, do not do anything ever again
|
# if word is deleted, do not do anything ever again
|
||||||
textfield.onkeydown = null
|
textfield.onkeydown = null
|
||||||
@ -448,7 +460,11 @@ module.exports = (HB)->
|
|||||||
r.right = new_pos
|
r.right = new_pos
|
||||||
writeRange r
|
writeRange r
|
||||||
else
|
else
|
||||||
word.delete (pos-1), 1
|
if pos > 0
|
||||||
|
word.delete (pos-1), 1
|
||||||
|
r.left = pos-1
|
||||||
|
r.right = pos-1
|
||||||
|
writeRange r
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
else if event.keyCode? and event.keyCode is 46 # Delete
|
else if event.keyCode? and event.keyCode is 46 # Delete
|
||||||
if diff > 0
|
if diff > 0
|
||||||
@ -461,6 +477,8 @@ module.exports = (HB)->
|
|||||||
r.left = pos
|
r.left = pos
|
||||||
r.right = pos
|
r.right = pos
|
||||||
writeRange r
|
writeRange r
|
||||||
|
creator_token = false
|
||||||
|
true
|
||||||
|
|
||||||
#
|
#
|
||||||
# @private
|
# @private
|
||||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user