日期:2014-05-20  浏览次数:20733 次

散分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
实际传递的是正则表达式

这样不是更好么

然后你在后台或者其他的地方就可以根据传递的正则表达式进行验证了

你为什么搞的那么麻烦呢

图早就挂了
。。。。
------解决方案--------------------
探讨

要是一个ID还代表着多个正则表达式
然后你还需要在给定ID的情况下决定具体使用哪个正则表达式

你不觉得麻烦么

直接就是在下拉列表里写正则表达式
显示的时候是ID
实际传递的是正则表达式

这样不是更好么

然后你在后台或者其他的地方就可以根据传递的正则表达式进行验证了

你为什么搞的那么麻烦呢

图早就挂了
。。。。

------解决方案--------------------
其实刚才就说了这个的
只是lz没明白

我其实也不是很清楚地知道lz到底要怎么做

js本身也可以验证的

不过客户端的压力稍微大一点点而已

js里也有match等函数的

百度或者谷歌一下就能找到js里的函数的


------解决方案--------------------
探讨

这是项目里的一个东西,比较复杂一点点,呵呵。
思路是这样的:验证模式列表里的名称如邮箱,手机这些名称,是在另外一个页面由用户连同它的正则表达式一起添加上去的。在这个页面供选择,显示的是验证模式名称,里面封装了对应的ID,选择某一个验证模式名称,然后通过ID找到正则表达式

------解决方案--------------------
你先使用struts2的模型驱动获取MAP,在赋值给<SELECT>中的<option>元素,通过客户选中了后,使用JS提交,提交时候把选中值传过去,在ACTION中获取选中值。你想通过JS自动生成选中的值再提交,那是不行的,除非使用异步调用.
------解决方案--------------------
可以加个隐藏域 来保存那个表达式 就相当于一个联动效果一样...改变下隐藏域的值就变了形么(ajax) 如果是改变了立刻就去校验 那就不用隐藏域了 挺笨的方法^_^