textarea保留空格和回车符的格式提交表单

目的:为了保持提交表单前输入框内的内容格式和用户在看到自己的数据之后保持一致



test.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	<title>textarea测试</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

	<style type="text/css" media="screen">
		.cc{width:600px;height:100px;}
		#d1{background:#88eeff;font-size:14px;}
		#zwtj{font-size:14px;}
	</style>
	
	<script type="text/javascript">
	
	// 扩展String类型的替换全部函数
	String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) 
	{ 
		if (!RegExp.prototype.isPrototypeOf(reallyDo)) 
		{
			return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith); 
		}
		else 
		{
			return this.replace(reallyDo, replaceWith); 
		}
	}

	// 获取转义后的字符串 保留回车符、保留空格符
	function getTextAreaValue(strId)
	{
		var eTxt = document.getElementById(strId);
		var str = eTxt.value;
		str = str.replaceAll(" ", " ",true);
		str = str.replaceAll("\n", "<br/>",true);
		return str;
	}
	
	// 在div当中看转换后的textarea中的文本
	function showText()
	{
		var eD2 = document.getElementById("d1");
		
		eD2.innerHTML = getTextAreaValue("zwtj");
	}

	</script>
	</head>

	<body>

		<textarea name="zwtj" cols="80" rows="5" id="zwtj" ></textarea>
		<br/>
		<input type="button" value="查看文本↓" οnclick="showText()" />
		<br/>
		<div class="cc" id="d1">
		@sonikk 2013-4-11 11:03:30
		</div>
			
	</body>
</html>


### Vue2 中实现 textarea 禁用空格回车 在 Vue2 的项目中,可以通过监听 `onkeyup` 或者 `input` 事件来动态修改用户的输入内容,从而达到禁用特定字符(如空格回车)的效果。以下是具体的实现方式: #### HTML 结构 通过绑定自定义的 `v-on:keyup` 方法到 `<el-input>` 组件上,可以实时拦截并过滤掉不希望被输入的内容。 ```html <template> <div> <!-- 使用 Element UI 的 el-input --> <el-input type="textarea" v-model="inputValue" @keyup="handleKeyup"> </el-input> </div> </template> ``` #### JavaScript 实现逻辑 在组件的方法部分编写 `handleKeyup` 函数,用于移除用户输入中的空格换行符。 ```javascript <script> export default { data() { return { inputValue: '' // 双向绑定的数据模型 }; }, methods: { handleKeyup(event) { // 移除所有的空格 (包括全角半角) this.inputValue = this.inputValue.replace(/[\s]/g, ''); // 如果需要额外阻止默认行为(例如防止继续输入),可调用 event.preventDefault() if (event.key === 'Enter' || /\s/.test(event.key)) { event.preventDefault(); } } } }; </script> ``` 上述代码实现了以下功能: - 当用户按下键盘时触发 `@keyup` 事件。 - 利用正则表达式 `/[\s]/g` 替换所有空白字符(包括空格、制表符 `\t` 换行符 `\n`)。[^2] - 对于按键为 Enter 或其他空白键的情况,调用了 `event.preventDefault()` 来完全阻止其默认行为。[^4] #### CSS 样式调整 为了确保用户体验一致,在某些情况下可能还需要设置一些样式规则以优化展示效果。 ```css <style scoped> /* 设置多行文本区域内的换行模式 */ textarea { white-space: pre-line; } </style> ``` 此样式的目的是使多行文本框内部能够正常显示已有的换行结构,即使这些换行不会作为有效数据存储下来。[^3] --- ### 总结 以上方案综合运用了 Vue 数据绑定机制以及 DOM 事件处理能力,成功解决了在 Vue2 应用程序中如何限制用户在 `<textarea>` 内部输入非法字符的问题。这种方法不仅简单易懂而且兼容性强,适用于大多数场景需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值