2012-05-21 133 views
0

我有4个输入文本字段,我希望将它们复制到文本区域,我试图做同样的操作,使每个副本都到一个单独的文本输入字段,但那不起作用。从多个文本输入框复制到文本区域:

我的代码如下:

<fieldset> 
     <legend>Page Message:</legend> 
     <div class="textarey"> 
     <input type="text" class="lookalike" id="message_text1" name="message_text1" onkeyup="copy_data(this); if(this.value.length>=24) document.editPage.message_text2.focus()" style="text-decoration:ltr;" value="<?php echo $page['message_text']; ?>" size="38" maxlength="24"><br> 

     <input type="text" id="message_text2" name="message_text2" maxlength="24" size="38" class="lookalike" style="text-decoration:ltr;" value="<?php echo $page['message_text']; ?>" onkeyup="copy_data(this); if(this.value.length>=24) document.editPage.message_text3.focus()"><br> 

     <input type="text" id="message_text3" name="message_text3" maxlength="24" size="38" class="lookalike" style="text-decoration:ltr;" value="<?php echo $page['message_text']; ?>" onkeyup="copy_data(this); if(this.value.length>=24) document.editPage.message_text4.focus()"><br> 

     <input type="text" id="message_text4" name="message_text4" size="42" class="lookalike" style="text-decoration:ltr;" value="<?php echo $page['message_text']; ?>" onkeyup="copy_data(this)"> 
</div> 


     <textarea id="message" /><?php echo $page['message']; ?></textarea> 

和JavaScript从场副本是在这里:

function copy_data(val){ 
     var messageText = document.getElementById(val.id).value 
      document.getElementById('message').innerHTML = messageText; 


} 

我的问题是,每次一个文本框获取到年底它的MAXCHARS它会清除文本区域。任何人有任何想法吗?

感谢

+0

是否有一个原因,你没有**所有**你的风格在你的课堂?它会至少减少你的代码.. – Daedalus

回答

1
<script type="text/javascript"> 
var text = ""; 
    for(var x=1;x<=4;x++) { 
    text += document.getElementById("message_text"+x).value; 
    text += "\n"; 
    } 
    document.getElementById("message").value = text; 
</script> 
  • ,你可能会考虑一个函数从任何你想要的输入复制到 任何元素。
+0

这个效果非常好! ...谢谢:) – MrMage

+0

如果选择输入到我正在处理输入的文本的文本区域,是否可以传递来自派克斯的样式?我有这样的: 'function formatText(el,tag){selectedId = document.selection?document.selection.createRange :Moz if(selectedText ==“”) {return false} var newText ='#'+ tag +''+ selectedText +'#'+ tag +''; if(document.selection){// IE document.selection.createRange()。text = newText; } else else {el.selectionEnd,el.value.length}; } }' – MrMage

2
function copy_data(val){ 
    var messageText = document.getElementById(val.id).value 
     document.getElementById('message').innerHTML += messageText; 
} 

但我建议不要使用内联JS。

+0

看起来不错,唯一的问题是,你将如何从输入调用函数?谢谢! – mongotop

+1

嗯,我没有完全明白你的问题 - '你将如何从输入调用函数'?无论我能从你的问题中得出什么结果,你似乎都在问如何调用函数。嗯,这取决于#user1395580想要如何调用它。我所做的只是将'='标志更改为'+ ='标志 - 这将完成这项工作。顺便说一句,我建议在上面的答案给出的代码。这比我所做的要好得多。 –

+0

非常感谢您的回答!我很感激! – mongotop

-1

我的问题是,每一个文本框到达它的结束时间是 MAXCHARS它清除文本区域。任何人有任何想法吗?

这是因为即使你达到了maxchar的末尾,你仍然继续打字。按照您的javascript函数,textarea一次只会显示来自4个文本字段之一的数据。所以,运动领域1达到最大长度,field2获得焦点根据您的代码。

onkeyup="copy_data(this); if(this.value.length>=24) document.editPage.message_text2.focus()" 

因此,当field2获得焦点,并且继续输入时,textarea变为空白并开始显示field2数据。

相关问题