2010-10-24 70 views
1

我可以防止“onblur”事件中的选择丢失吗?将选择保留在textarea

<!DOCTYPE html> 

<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en"> 
    <head> 
     <meta http-equiv = "Content-Type" content = "text/html; charset=utf-8"> 

     <script type = "text/javascript"> 
      window.onload = function() { 
       var textarea = document.getElementsByTagName ("textarea")[0]; 

       textarea.onblur = function() { 
        alert ("Should keep selection"); 

        return false; 
       } 
      } 
     </script> 

     <title>Select me !</title> 
    </head> 

    <body> 
     <textarea>Select me !</textarea> 
    </body> 
</html> 

感谢/

+1

你想让你的访问者选择一个textarea,然后禁用它们模糊textarea,所以他们不断选择文本在textarea?听起来很奇怪...... – Tim 2010-10-24 12:36:28

+0

我对你的JavaScript颜色有一个回答:红色的问题,但你删除它。 – JohnB 2010-11-13 16:44:51

+0

我可以想出一个很好的理由,有人可能想这样做。假设他们正在进行“实时验证”,as-in:防止用户在填充有效的文本区域(或文本框或其他输入)之前移动到另一个字段。我目前正在研究一个允许用户填充MANY textareas(它是一个交互式调查练习)的工具;如果有重复,我想马上提醒他们;因为只有'提交'才会使它更加痛苦。 人们需要记住,除了“常见形式”之外,还有更多的输入。 – 2014-10-29 18:44:37

回答

5

我不认为这是一个好主意。手中有鼠标的用户可以点击页面上的任何位置。如果你让他回到textarea,它不会遵循web accessibility的原则。

4

也许你的意思是你想要记住选择,即使用户关注另一个元素,以便如果他们回到textarea,仍然会选择相同的文本。是这样吗?

如果是这样,我认为最简单的事情就是将textarea放在一个iframe中的同一个域中。每个文档都有自己的选择上下文。当然,您需要从textarea中读取数据,并且可能将其复制到表单中的隐藏字段中,因为您不能在另一个文档中的表单中包含字段,所以您需要创建一种代理。

2
  textarea.onblur = function() { 
       alert ("Should keep selection"); 
       textarea.focus(); 

       return false; 
      } 
+0

我不知道为什么你想这样做。但你永远不知道某人的原因。 – polyhedron 2010-10-24 12:44:06