一个表单验证中,在JS上定义了个变量
<script type="text/javascript">
var oldValues = new Object();"<?php forech($i = 0; $i < count($values[0]); $i++) {"
oldValues["<?php echo key($values[0]) ?>"] = "<?php echo current($values[0]) ?>"
"<?php } ?>"
</script>
这样虽然可以将后台php传递过来的数组填充到Object中,但是如果数据中有回车的话就会提示错误"未结束的字符串常量"
看了下网页显示的源代码<script type="text/javascript">
''
oldValues['id'] = '49';
''
oldValues['name'] = 'xxx';
''
oldValues['phone'] = '';
''
oldValues['fax'] = '';
''
oldValues['email'] = '';
''
oldValues['desc'] = '备注1
备注2
备注3
备注4
备注5
备注6
备注7
备注8
备注9';
''
</script>JS中字符串不允许换行...但这个desc的数据是从HTML中的textarea文本框中获取到的数据,保存到后台数据就是这样了,而且要在HTML中显示的也应该是这样
表单提交的时候会调用onsubmit()方法
方法中使用
<script type="text/javascript">
function onsubmit() {
for(var ol in oldValues) {
if(oldValues[ol] != document.getElementById(ol).value) {
isUpdate = 1; //form表单中的隐藏属性,默认为0,如果表单中数据有一个与原始数据不一样
//则将表单提交到后台进行更新,后台更新前先判断isUpdate是否为1,为1才进行更新
break;
}
}
return true;
}
</script>
试过在后台传递过来之前就将desc数据中的回车替换为<br>,但这样在textarea中显示的就变成"备注1<br>备注2<br>"这样..
要怎样才能显示成
"备注1
备注2"
这样的呢??如果显示成这样,但oldValues里存放的还是"备注1<br>备注2<br>",那提交前也得先把textarea里的数据替换回来吧...该如何替换呢??
<script type="text/javascript">
var oldValues = new Object();"<?php forech($i = 0; $i < count($values[0]); $i++) {"
oldValues["<?php echo key($values[0]) ?>"] = "<?php echo current($values[0]) ?>"
"<?php } ?>"
</script>
这样虽然可以将后台php传递过来的数组填充到Object中,但是如果数据中有回车的话就会提示错误"未结束的字符串常量"
看了下网页显示的源代码<script type="text/javascript">
''
oldValues['id'] = '49';
''
oldValues['name'] = 'xxx';
''
oldValues['phone'] = '';
''
oldValues['fax'] = '';
''
oldValues['email'] = '';
''
oldValues['desc'] = '备注1
备注2
备注3
备注4
备注5
备注6
备注7
备注8
备注9';
''
</script>JS中字符串不允许换行...但这个desc的数据是从HTML中的textarea文本框中获取到的数据,保存到后台数据就是这样了,而且要在HTML中显示的也应该是这样
表单提交的时候会调用onsubmit()方法
方法中使用
<script type="text/javascript">
function onsubmit() {
for(var ol in oldValues) {
if(oldValues[ol] != document.getElementById(ol).value) {
isUpdate = 1; //form表单中的隐藏属性,默认为0,如果表单中数据有一个与原始数据不一样
//则将表单提交到后台进行更新,后台更新前先判断isUpdate是否为1,为1才进行更新
break;
}
}
return true;
}
</script>
试过在后台传递过来之前就将desc数据中的回车替换为<br>,但这样在textarea中显示的就变成"备注1<br>备注2<br>"这样..
要怎样才能显示成
"备注1
备注2"
这样的呢??如果显示成这样,但oldValues里存放的还是"备注1<br>备注2<br>",那提交前也得先把textarea里的数据替换回来吧...该如何替换呢??
像
<script type="text/javascript">
''
oldValues['id'] = '49';
''
oldValues['name'] = 'xxx';
''
oldValues['phone'] = '';
''
oldValues['fax'] = '';
''
oldValues['email'] = '';
''
oldValues['desc'] = '备注1
备注2
备注3
备注4
备注5
备注6
备注7
备注8
备注9';
''
</script>
这里显示了几个'',应该就是
"<?php forech($i = 0; $i < count($values[0]); $i++) {"
"<?php } ?>"
这2句话导致的...可是在JS代码中不这样不行啊...有什么办法让那几个''不出现吗?
<script type="text/javascript">
function ol() {
alert(document.getElementById('pp').innerHTML);
}
function ol2() {
document.getElementById('pp').innerHTML = "sdf \r\n sdgl";
}
</script>
<body>
<input type="button" value="textarea_value" onclick="ol()" />
<input type="button" value="write_textarea" onclick="ol2()" />
<textarea name="textarea" cols="100" rows="13" id="pp">
</textarea>
</body>
</html>
这样有没用啊...显示出来的就一个空格...
\n \\n \\r\\n 都试过了...一样...
<br>的话,触发函数的时候IE8提示“消息: 未知的运行时错误”
<html>
<script type="text/javascript">
function ol() {
alert(document.getElementById('pp').innerHTML);
}
function ol2() {
var aa = 'hi'+'\n'+'helle';
document.getElementById('pp').value = aa;
}
</script>
<body>
<input type="button" value="textarea_value" onclick="ol()" />
<input type="button" value="write_textarea" onclick="ol2()" />
<textarea name="textarea" cols="100" rows="13" id="pp">
</textarea>
</body>
</html>试试吧,你给他的value,他自动把\n转换成htmlcode
否则你要自己把换行符号转换成htmlcode
感谢!!终于解决了...
在提交到后台前,用JS将textarea里的数据转换一下var txtareas = document.getElementsByTagName('textarea');
for(var i = 0; i < txtareas.length; i++) {
//之所以用<br__>是想说如果换回来的时候刚好原本的内容有<br>的话,那就会被替换掉...
txtareas[i].value = txtareas[i].value.replace(/\r\n/g,"<br__>");
}然后后台传递到前台的时候,则在body的onload事件中将数据转回来function init() {
document.getElementById('desc').value = "<?php echo $values[0][ 'desc'] ?>".replace(/<br__>/g,"\r\n");
}这样数据库中存储的就是类似
“士大夫 <br__>士 受到<br__>受到 sdkjfkj kljsdf<br__>sdfkjklsjdlf”
这样的...这样在初始化oldValues的时候就不会出现未结束常量的错误了...
十分感谢xuetao121!!
然后显示的时候再逆过来
在HTML里倒是可以...
但是存到mysql数据库里,\t既然就变为空格了...