jQuery form的load函数与el表达式赋值的冲突问题

问题:

在使用el表达式给表单中的项赋初始值的时候,总是失败,物流公司没有自动选中,物流单号也没有显示值。

<form id="form" method="post">。。。。<tr>
    <th>物流公司:</th>
    <td>
        <select id="shippingCompany" name="shippingCompany" class="easyui-combobox" style="width: 171px;" data-options="required:true">
        <c:choose>
            <c:when test=‘${not empty brand}‘>
                <c:forEach var="lc" items="${logisticsCorporations}">
                    <c:choose>
                        <c:when test=‘${brand.shippingCompany eq lc.logisticsId}‘>
                            <option value="${lc.logisticsId }" selected="selected">${lc.logisticsName }</option>
                        </c:when>
                        <c:otherwise>
                            <option value="${lc.logisticsId }" >${lc.logisticsName }</option>
                        </c:otherwise>
                    </c:choose>
                </c:forEach>
            </c:when>
            <c:otherwise>
                <c:forEach var="lc" items="${logisticsCorporations}">
                    <option value="${lc.logisticsId }" >${lc.logisticsName }</option>
                </c:forEach>
            </c:otherwise>
        </c:choose>
        </select>
    </td>
</tr>
<tr>
    <th>物流单号:</th>
    <td><input name="shippingSn" id="shippingSn"
        class="easyui-textbox easyui-validatebox" type="text"
         value="${brand.shippingSn }" required="required"/></td>
</tr></form>

调查:

1、当我把class="easyui-combobox"和class="easyui-textbox easyui-validatebox"属性去掉以后,就正常了。怀疑是easyui冲突了。

2、当我把form标签删掉,或者把form的id属性改个名字,也正常了,怀疑是jQuery在使用form的时候造成的冲突。

3、继续调查,当前页面其实是一个编辑页面,它是这样在父页面中被打开的:

//发货
function ship() {
    var row = $dg.datagrid(‘getSelected‘);
    if (row) {
        parent.$.modalDialog({
            title : ‘编辑订单信息‘,
            width : 600,
            height : 270,
            href : "${pageContext.request.contextPath}/orders/showShip?orderId="+row.orderId+"&orderInfoId="+row.orderInfoId,
            onLoad:function(){
                var f = parent.$.modalDialog.handler.find("#formx");
                f.form("load", row);
            },
            buttons : [ {
                text : ‘确定‘,
                iconCls : ‘icon-ok‘,
                handler : function() {
                    parent.$.modalDialog.openner= $grid;//因为添加成功之后,需要刷新这个dataGrid,所以先预定义好
                    var f = parent.$.modalDialog.handler.find("#form");
                    f.submit();
                }
            }, {
                text : ‘取消‘,
                iconCls : ‘icon-cancel‘,
                handler : function() {
                    parent.$.modalDialog.handler.dialog(‘destroy‘);
                    parent.$.modalDialog.handler = undefined;
                }
            }
            ]
        });
    }else{
        parent.$.messager.show({
            title :"提示",
            msg :"请选择一行记录!",
            timeout : 1000 * 2
        });
    }
}

dg是一个datagrid表格,我们的编辑页面就是编辑dg选中的一行数据。注意onLoad方法,在数据加载完毕以后,有一个f.form("load",row)方法,该方法能够自动将这行数据的各属性值填充到编辑页面的相应表单项中。

这本质上与我们在编辑页面中使用el表达式给表单项赋值就冲突了,也就是说,你要么使用f.form("load",row)给表单项赋值,要么使用el表达式给表单项赋值,只能选一个。

解决:

去掉onLoad方法。

时间: 2024-10-10 05:50:25

jQuery form的load函数与el表达式赋值的冲突问题的相关文章

jquery代码中是不能插入el表达式

$(function(){ $("#fengye").val(${currentPage}); });

关于jQuery.form中formSerialize()等函数的适用对象

几个月前写一个页面,要用到Ajax提交,于是写了几行jQuery: …… var formData = $("form")[0].formSerialize(); …… 然后死活调不通……这一句总说“对象不支持该方法” 无奈,给form对象分了个id,然后改成这样: …… var formData = $("#main-form").formSerialize(); …… 总算是过了. 最近要改一个框架,又要Ajax提交,于是把原来的句子抄了过来. 框架嘛,总要有点

[应用篇]第一篇 EL表达式入门

概念 EL表达式:EL 全名为Expression Language,就是为了替代<%= %>脚本表达式. 作用 获取数据: EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象.获取数据.(某个web域 中的对象,访问javabean的属性.访问list集合.访问map集合.访问数组) 执行运算: 利用EL表达式可以在JSP页面中执行一些基本的关系运算.逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算.${user==null} 获取web开发常

jsp的el表达式

其实工作那么久,一直都是写的Freemarker模板页面,直到最近才开始写JSP页面,所以这里完整学一下JSP原生支持的EL表达式(web.xml的3.0版本默认支持,后面说). EL的全名是Expression Language,它原本是JSTL 1.0为了方便存储数据所自定义的语言,发展到现在已经是一项成熟.标准的技术. 使用EL表达式获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的WEB域中检索Java对象并获取数据,比如某个WEB域中的Java Bean.List

JSP:使用EL表达式调用java函数

JSP:使用EL表达式调用java函数 使用一个例子 编写一个使用JSP表达式语言的JSP程序,输入一个数字,提交后输出该数字的九九乘法表. java代码实现打印9*9乘法表 Solution.java package method; public class Solution { public static String Mul99(int n){ String result=""; for(int i=1;i<=9;i++){ int temp=i*n; result=res

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例 EL表达式 1.获取域对象中的值 2.EL表达式支持运算 ${ num1 + num2 } EL获取常用的WEB对象 1.pageScope 获取page域对象的值 2.requestScope 获取request域对象的值 3.sessionScope 获取session域对象的值 4.applicationScope 获取application域对象的值 * 例子:向某个域中来存入值 req

day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的. JSP中有三大指令:page.include.taglib,最为常用,也最为复杂的就是page指令了. 2 page指令 page指令是最为常用的指定,也是属性最多的属性! page指令没有必须属性,都是可选属性.例如<%@page %>,没有给出任何属性也是可以的!

EL表达式中fn函数

JSTL 使用表达式来简化页面的代码,这对一些标准的方法,例如bean的getter/setter方法,请求参数或者context以及 session中的数据的访问非常方便,但是我们在实际应用中经常需要在页面调用对象的某些方法,例如我需要调用字符串的length方法来获取字符串的 长度时,在以往的开发过程中我们必须把对象先转为String类,然后在调用其length方法,这样的代码繁琐而且容易出错. 因此JSTL内置了几个用于字符串操作的方法,可以直接在表达式中使用,大大的简化了代码,提供代码的

Web开发中前台与后台技术小结--关于EL表达式,JSTL,eval()函数

在我们日常Web开发中,常常用到EL表达式,JSTL标签,还有可能用到JavaScript中的eval().下面就这样技术和函数小小说明一下. EL(Expression Language),全称表达式语言,既然是开发语言,那么就像Java等语言一样是用来写语句的,通常是用在JSP页面中,我们为了获取JSP提供的内置对象的属性值, 我们通常会使用到EL表达式,比如开发中常见的一个需求就是获取项目的根目录,如果项目的名值变化了,我们在指定路径时,如果把项目的根目录用一个变量来表示的话,那么就不 需