【发布时间】:2014-08-03 07:41:38
【问题描述】:
分别拥有三个文本框textbox1、textbox2和textbox3
当用户输入文本框时,我想将这些文本框的值放入画布(cnv)中
并在用户从文本框中删除值时删除它。
问题是当我试图删除一个文本框的值时,画布上的所有值都被清除了。但我想防止旧值。
【问题讨论】:
标签: javascript jquery html html5-canvas
分别拥有三个文本框textbox1、textbox2和textbox3
当用户输入文本框时,我想将这些文本框的值放入画布(cnv)中
并在用户从文本框中删除值时删除它。
问题是当我试图删除一个文本框的值时,画布上的所有值都被清除了。但我想防止旧值。
【问题讨论】:
标签: javascript jquery html html5-canvas
change 事件仅在焦点离开文本框时触发。
对于按键响应,请在您的文本框中监听 keyup 事件,而不是 change 事件。
示例代码:
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<style>
body{ background-color: ivory; }
canvas{border:1px solid red;}
</style>
<script>
$(function(){
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var $text1=document.getElementById("sourceText1");
var $text2=document.getElementById("sourceText2");
$text1.onkeyup=function(e){ redrawTexts(); }
$text2.onkeyup=function(e){ redrawTexts(); }
function redrawTexts(){
ctx.clearRect(0,0,canvas.width,canvas.height);
wrapText(ctx,$text1.value,20,60,100,24,"verdana");
wrapText(ctx,$text2.value,150,60,100,24,"verdana");
}
function wrapText(context, text, x, y, maxWidth, fontSize, fontFace){
var words = text.split(' ');
var line = '';
var lineHeight=fontSize;
context.font=fontSize+" "+fontFace;
for(var n = 0; n < words.length; n++) {
var testLine = line + words[n] + ' ';
var metrics = context.measureText(testLine);
var testWidth = metrics.width;
if(testWidth > maxWidth) {
context.fillText(line, x, y);
line = words[n] + ' ';
y += lineHeight;
}
else {
line = testLine;
}
}
context.fillText(line, x, y);
return(y);
}
}); // end $(function(){});
</script>
</head>
<body>
<h4>Type text to wrap into canvas.</h4>
<input id=sourceText1 type=text>
<input id=sourceText2 type=text><br>
<canvas id="canvas" width=300 height=300></canvas>
</body>
</html>
【讨论】:
试试这个:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.font = "30px Arial";
var y=10
function canvasFillTxt(txt){
ctx.fillText(txt,10,y);
y=y+20
}
$('input').on('change',function(){
canvasFillTxt($(this).val())
})
我希望是你正在寻找的......
【讨论】: