现在的位置: 首页 > 综合 > 正文

TextArea小技巧

2013年12月08日 ⁄ 综合 ⁄ 共 3631字 ⁄ 字号 评论关闭

 

关于TextArea,经常会碰到换行或者背景色,字体之类的问题。最近关于这些有了下面两个发现(IE下测试通过)

1.TextArea的字体颜色等等

TextArea可以有子节点,所以可以给它加一个DIV之类的东西,然后在这个DIV里可以添加任意的HTML,这样就可以实现字体颜色等等。

下面这个Sample展示了如何控制TextArea的颜色和字体。

main.html

-----------------------------------------------------------------------------------

<html>

<form name="form2" method="post" action="xxxx">

<table>

  <tr>

    <td>

 

<textarea id="test" name="topic" rows="10" cols="40"></textarea>

<input type="button" value="Open new Window" onclick="openNewWindow();" >

    </td>

  </tr>

</table>

</form>

<Script Language="JavaScript">

function doReplace(returnValue) {

    procedureRegexp = new RegExp('<FONT style="BACKGROUND-COLOR: #ffff00">', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '');

    procedureRegexp = new RegExp('<BR>', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '/n');

    procedureRegexp = new RegExp('<DIV>', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '');

    procedureRegexp = new RegExp('</DIV>', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '');

    procedureRegexp = new RegExp('&nbsp;/n', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '');

    procedureRegexp = new RegExp('&nbsp;', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '');

    procedureRegexp = new RegExp('</FONT>', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '');

    procedureRegexp = new RegExp('&lt;&lt;', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '<<');

    procedureRegexp = new RegExp('&gt;&gt;', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '>>');

    procedureRegexp = new RegExp('&amp;', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '&');

    procedureRegexp = new RegExp('<FONT style="FONT-WEIGHT: bold; COLOR: #0000ff">', 'gi');

    returnValue = returnValue.replace(procedureRegexp, '');

 

    return returnValue;

}

 

  function openNewWindow() {

    var paramArray = new Array(3);

                paramArray[0] = window; 

                var returnValue = window.showModalDialog("popupwindow.html",paramArray,"dialogWidth:800px;dialogHeight:600px;status:no;scroll:no");

 

                document.form2.topic.value=doReplace(paramArray[0]);

  }

</Script>

 

 

<html>

-----------------------------------------------------------------------------------

popupwindow.html

-----------------------------------------------------------------------------------

<form name="form1" method="post" action="1.asp">

<textarea id="test" name="topic" rows="10" cols="40"></textarea>

<input type="button" value="Go back" onclick="getValueBack();" >

</form>

<Script Language="JavaScript">

var parentValue = window.dialogArguments[0].document.form2.topic.value;

if(parentValue == '') {

var sampleDiv = document.createElement("div");

var divContent = "I select:<br>"

divContent = divContent + "<font style='background-color:#FFFF00;'>" + "China" + "</font>";

divContent = divContent + " VS " + "<font style='font-weight:bold;color:#0000FF;'>" + "USA" + "</font><br>";

divContent = divContent + "<font style='background-color:#FFFF00;'>" + "Chile" + "</font>";

divContent = divContent + " VS " + "<font style='font-weight:bold;color:#0000FF;'>" + "Haiti" + "</font><br>";

 

sampleDiv.innerHTML = divContent;

document.form1.topic.appendChild(sampleDiv);

} else {

   document.form1.topic.value = parentValue;

}

function getValueBack() {

                window.dialogArguments[0] = document.form1.topic.innerHTML;

                window.close();

}

</Script>

-----------------------------------------------------------------------------------

 

 

从上面的代码可以看到:

a.TextArea可以添加子节点,上面添加的是DIV,其实别的任何元素都可以。

b.popupwindow回到main页面的时候,需要把<br>换成"/n",否则会丢失换行

 

2.关于TextArea的换行

TextArea里头有两种换行的方式,一种是上面我们看到的<BR>,另外一种就是"/n"

如果是上面的例子里头那样的话,可以用alert查看TextAreavalue, value里头已经没有任何颜色字体格式的东西,

都是纯文本,所以如果想保持换行的话,可以用TextAreainnerHTML,这样的话,<font><br>之类的元素还可以看到,

但是父页面显示之前需要把这些元素替换掉,把<BR>替换成"/n"

 

 

抱歉!评论已关闭.