最近一直用ext做的web页面,为了验证页面中所有文本框输入的数据是否含有特殊字符。
解决方法(1):其实可以直接屏蔽掉特殊字符,不让用户输入。这样也就无所谓检测了。
解决方法(2):遍历整个web页面的所有文本框,对其值进行判断,并返回结果。
具体过程:
1 /****************************特殊字符校验时处理*********************************/ 2 function CheckSpecialWords() { 3 var RetvalStr = ""; 4 try { 5 Ext.each(Ext.query("*[type=text]"), function(item) { 6 if (item.value != "") { 7 if (item.getAttribute("SpecialWorkCheck") != null) { 8 if (!CheckSpecialWord(item.value)) { 9 RetvalStr += item.getAttribute("SpecialWorkCheck") + ","; 10 } 11 } 12 13 } 14 });
第5行是检索页面中所有“type=text”的控件。在此用到Ext.query()获取一个js数组,而不是用Ext.select()。因为slelect方法是返回一个ext的对象。
在这个检索条件获取的所有控件包含文本框、下拉列表、和日期控件,实际上只需要获取所有的文本框就可以了。但是好像没有什么好的判断条件来区别它们的不同。
第7行判断属性“SpecialWorkCheck”是否存在。该属性是在做web页面时,对每个需要特殊字符验证的控件所添加的。它的值为当前控件的"label"(实际上,在用Ext.query()获取到控件时,它是没有label属性的)。
第8行是验证特殊字符的方法。
第9行则返回所有包含特殊字符的文本框的"label"值。
在获取页面控件时曾经遇到一个问题。如果web页面存在tab,在页面初始加载完成后。直接点击“保存”触发上面的js方法,结果调试时发现只获取了当前active-tab 的控件,而没有获取其它tab的控件。而实际上如果其它tab没有激活,那么对它进行特殊字符验证也是没有必要的。