如何将angular textarea设置为仅以某些单词开头

时间:2016-04-06 23:36:11

标签: javascript angularjs

我有一个textarea定义为:

<textarea class="lined" rows="30" name="script_text" ng-model="textContent" placeholder="Enter Script Here" style="width:100%"></textarea>

是否可以让文本区域中的每一行仅以某个单词列表开头?

例如,用户只能输入:

THIS (doesnt matter what comes after)
IS (doesnt matter what comes after)
ALLOWED (doesnt matter what comes after)

但如果用户键入:

This is a sentence 
next line 
and another line

这是不允许的。这可能吗?

2 个答案:

答案 0 :(得分:0)

好。这是一个纯粹的Javascript解决方案。在Angular中,您可以使用$ scope.yourmodel.val()等编写它。

我用这个HTML测试了它:

<textarea id="text" class="lined" rows="30" name="script_text" ng-model="textContent" placeholder="Enter Script Here" style="width:100%"></textarea>

我插入了这个值:

document.getElementById('text').value

结果:

“Bla das ist ein Text Nochmal blaa“

首先:我有一个正则表达式来获得每一行。你必须自下而上。零是最后一行,在我的例子中是第一行:

document.getElementById('text').value.match('(.*)(?=(\n.*){1}$)')

结果:

["Bla das ist ein Text", "Bla das ist ein Text", "
Nochmal blaa"]

好:现在你可以写一个for,foreach,你想要的任何循环。 你计算并在正则表达式中使用cnt。如果你得到一个null,你就完成了。 我得到了:

document.getElementById('text').value.match('(.*)(?=(\n.*){2}$)')

null

第二:你用文字分割每一行文字。第一个值是你的话:

document.getElementById('text').value.match('(.*)(?=(\n.*){1}$)')[0].split(' ')[0]

结果:“Bla”

答案 1 :(得分:0)

如果您正在使用Angular。您可以充分利用ng-pattern directive

你可以试试这个:

<textarea class="lined" rows="30" name="script_text" ng-model="textContent" placeholder="Enter Script Here" style="width:100%"  ng pattern="/^(THIS|IS|ALLOWED) .*/"></textarea >

这是fiddle