散分100分,求助在js中取struts2的值,然后进行js验证的写法,请高手帮忙,在线等待.....
我现在想验证输入的值是否符合验证模式所对应的正则表达式,验证模式如图
(为避免大家分散精力,表单的其它不必要部分未截取图片)
他在jsp中对应的代码是
<div id="checkMode_" class="clear">
<div class="left">验证模式</div>
<div class="right">
<s:select list="#request.checkModeMap" name="attr.checkMode.id"/>
</div>
</div>
在Action中是这样存值的:
Map checkModeMap = new LinkedHashMap();
Map regxMap = new LinkedHashMap();
//DicData是一个关于验证模式的实体类,dlist是一个存放DicData对象的链表
for (DicData dd : dList) {
//将验证模式ID和验证模式名称(如:邮箱)作为键值对放入checkModeMap
checkModeMap.put(dd.getId(), dd.getAttrName1());
//将验证模式ID和它代表的正则表达式作为键值对放入regxMap中
regxMap.put(dd.getId(), dd.getAttrName2());
}
request.put("checkModeMap", checkModeMap);
request.put("regxMap", regxMap);
最后目的,就是要在js中取到action中的正则表达式的值与表单上输入的值进行比较验证。
这个js的验证,我写了个开头
function checkRegx(){
//从表单取的需要使用正则表达式进行验证的值
var defaultValue = document.forms["saveAttr"]["attr.defaultValue"].value ;
//取的验证模式的ID
var checkModeID = document.getElementsByName("attr.checkMode.id")[0].value;
//问题的关键就在于,我想通过ID取的其正则表达式,不知道该怎么写了,我是这样写的,但是不对
var regx =${"#request.regxMap".get(checkModeID)}
}
请教各位大侠,帮忙看一下var regx的值该怎样取的???在线等待中。。。。。。。。。。。。
[解决办法]
那在action里直接获取该ID
进行Map或者数据库查询
或者你干脆就直接把那个模式的表达式发过来不就好了嘛
还发什么ID啊
这样你从表单中接收的东西不就直接可以使用表达式验证了嘛
诶。。。。
[解决办法]
if(''=='<s:property value="action里面传过来的东西嘛"/>'){
...
}
[解决办法]
要是一个ID还代表着多个正则表达式
然后你还需要在给定ID的情况下决定具体使用哪个正则表达式
你不觉得麻烦么
直接就是在下拉列表里写正则表达式
显示的时候是ID
实际传递的是正则表达式
这样不是更好么
然后你在后台或者其他的地方就可以根据传递的正则表达式进行验证了
你为什么搞的那么麻烦呢
图早就挂了
。。。。
[解决办法]