Mootools 1.2教程 输入过滤第二部分(字符串)(2)


string_to_match = "string containing whatever words you want to try to match";
word_array = ['words', 'to', 'match'];
// 把数组中的每一个单词作为变量传进去
word_array.each(function(word_to_match){
// 寻找当前的单词
if (string_to_match.contains(word_to_match)){
alert('found ' + word_to_match);
};
});


我们把它放进一个textbox中,加一点想象,你就可以拥有你自己的脏词(或者其他任何)检测器。
参考代码:

复制代码 代码如下:


var containsDemo = function(){
// 把我们要禁止的词放进一个数组
var banned_words = ['drat', 'goshdarn', 'fiddlesticks', 'kumquat'];
// 获得文本域中的内容
var textarea_input = $('textarea_1').get('value');
// 枚举过滤词中的每一个词
banned_words.each(function(banned_word){
// 在文本域内容中查找当前的过滤词
if (textarea_input.contains(banned_word)){
// 告诉用户不能使用那个单词
alert(banned_word + ' is not allowed');
};
});
}



substitute()
substitute()是一个非常强大的工具。我们今天只是讲一下一些关于它的基本知识,substitute的更多强大的功能来自于它的正则表达式的使用,我们会在后面稍微讲一下。然而,仅仅使用这些基本功能你就可以做很多事情了。
参考代码:

复制代码 代码如下:


// 这是要使用substitute方法的文本模板
// 注意,要替代的部分都是用花括号括起来的部分
var text_for_substitute = "One is {one}, Two {two}, Three is {three}.";
// 这个对象包含了要替换的规则
// 没有用引号引起来的部分是搜索项
// 用引号引起来的部分是用来替换搜索项的句子
var substitution_object = {
one : 'the first variable',
two : 'always comes second',
three : 'getting sick of bronze..'
};
// 在text_for_substitute上调用substitute方法
// 把substitution_object作为参数传入
// 把替换结果赋值给变量new_string
var new_string = text_for_substitute.substitute(substitution_object);
// new_string现在的值为"One is the first variable, Two always comes second, Three is getting sick of bronze..."


事实上你并不需要创建一个substitution_object对象来使用substitute方法,如果你觉得它不合适的话,下面的方法也同样可以实现:
参考代码:

复制代码 代码如下:


// 建立要替换的字符串
var text_for_substitute = "{substitute_key} and the original text";
// 把要替换的对象作为参数传给substitute方法
var result_text = text_for_substitute.substitute({substitute_key : 'substitute_value'});
// result_text现在就是"substitute_value and the original text"


你可以通过这个方法做得更多更深入一点,你可以用从一个DOM对象中获得值的函数调用来作为替换项的值,这也是可以的。
参考代码:

复制代码 代码如下:


var substituteDemo = function(){
// 从textfield中获得原始的 文本
var original_text = $('substitute_span').get('html');
// 用文本框中的值替换textfield中的值
var new_text = original_text.substitute({
first : $('first_value').get('value'),
second : $('second_value').get('value'),
third : $('third_value').get('value'),
});
// 用新的文本替换span中的内容
$('substitute_span').set('html', new_text);
// 禁用substitute按钮
// 并启用reset按钮
$('simple_substitute').set('disabled', true);
$('simple_sub_reset').set('disabled', false);
}
var substituteReset = function(){
// 创建一个变量来保存原有的文本
var original_text = "|- {first} -- {second} -- {third} -|";
// 用原有的文本来替换span中的内容
$('substitute_span').set('html', original_text);
// 禁用reset按钮
// 并启用substitute
$('simple_sub_reset').set('disabled', true);
$('simple_substitute').set('disabled', false);
}


|- {first} -- {second} -- {third} -|
first_value
second_value
third_value
在今天结束之前,有一个很小的提示,如果你在一个字符串上调用substitute方法,并且不为要替换的关键字提供一个键/值对(key/value pair)对象,那么它将只是简单地删除掉花括号里面的内容。因此,如果你需要保留花括号里面的字符串,请注意不要使用这个方法。举个例子,如下:
参考代码:

复制代码 代码如下:


("{one} some stuff {two} some more stuff").substitute({one : 'substitution text'});


这将返回“substitution text some stuff some more stuff”。
更多学习

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjyfff.html