今天根据客户的需求,修改了一下 输入发货单号的操作逻辑。,因为前期赶工比较忙,就直接一个发货按钮。a (?传参id)到一个form提交页面,要求用户输入发货单号,提交,因为后期数据量越来越大,用户终于怒了。一个简单的发货单号录入需要点击,录入,提交,提交完之后重新刷新list页,再重新去查找上次修改到的地方,这是要玩死人的节奏。于是乎,用ajax实现吧。代码如下:
$('a[id*="sendnumber"]').each(function(){ //遍历超链接,以便获取点击事件
$(this).click(function() { //监听点击事件
var id = $(this).attr("id"); //获取当前点击控件的id(这里要记住一个原则,约定优于配置,这里的约定就是id起名)
var sid=id.replace("sendnumber",""); //获取当前记录的唯一标示
var nid=id.replace("number",""); //获取输入发货单号的id
var snumber=$("#"+nid).attr("value"); //获取输入单号控件的内容即,你录入的输入单号。
if(snumber !="" ||snumber!=null || snumber!="undefined"){ //判断输入数据是否有效
$.ajax({ //这里就不用说了。ajax
url : "/weixintanghe/city/city_savenumber.action",
data : {"id" : sid, "number" : snumber },
type : "POST",
dataType: "json",
}).done(function(data){
if(data.state==1){
$("#state"+sid).html(1); //给id为statexxxx(记录唯一标示)的span对象赋值,<span>对象赋值方式为.html(xxxx)
//$("#send"+sid).attr("readonly","readonly") //设置属性为只读。
}
})
}
})
})
<s:iterator value="listorderson" id="item">
<tr>
<td><s:property value="#item.poid"/></td>
<td><s:property value="#item.wxnum"/></td>
<td><s:property value="#item.memberid"/></td>
<td><s:property value="#item.proname"/></td>
<td><s:property value="#item.promeans"/></td>
<td><s:property value="#item.pronum"/></td>
<td><s:property value="#item.warehouse"/></td>
<td><s:property value="#item.readdress"/></td>
<td><s:property value="#item.rename"/></td>
<td><s:property value="#item.rephone"/></td>
<td><span id="state<s:property value="#item.poid"/>"><s:property value="#item.sendstate"/></span></td>
<td>
<input id="send<s:property value="#item.poid"/>"type="text" value=${item.sendnum}>
</td>
<td><a id="sendnumber<s:property value="#item.poid"/>" >发货</a></td>
</tr>
</s:iterator>
在这里很是疑惑了一段时间,input正常的写法读取不出list的属性值。为空白的输入框。很是一通百度,终于有仁兄提示用原始的el表达式,或者ognl表达式,总归指出了一个方向,于是,成功。然后发现 a标签没有了href属性,点击的时候都是鼠标都是输入格式,然后a:hover{cursor:pointer;}。搞定!