父页面的校验能调用子页面jquery方法么,我子页面form表单在js中用jquery append上去的,父页面写的iframe。子页面自定义写了很多校验方法,父页面有个验证按钮,添加和提交按钮。不知道按钮能直接调用子页面和里面的方法吗吗。还有子页面append是不是在页面onlode()之后运行的。请教一下

解决方案 »

  1.   

    window.frames["name属性"].方法名()?<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.text.*"%>    
    <%@ include file="/jsp/inc/inc.jsp" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title></title>
    <script src="${ctxPath}/js/jquery/jquery-1.4.4.js"
    type="text/javascript"></script>
    <script type="text/javascript">
    $(function($) {
    //设置为同步
     var html = $.ajax({
    async: false
     }).responseText;
     jQuery.fn.extend({
     dateDate:function(){//变化时间校验
     var dateDate;//设置一个时间
     var changeDate=$('#changeDate'+i).val();//本次的变化时间
     var endDate=$('#endDate'+i).val();
     var changeDate1=$('#changeDate'+(i-1)).val();//上一次的变化时间
     var endDate1=$('#endDate'+(i-1)).val();//上一次的截止时间
     if(changeDate1!=""){
     dateDate=changeDate1;
     }else{
     dateDate=endDate1;
     }
     if(changeDate!=""){
     if(changeDate<now){//判断是否小于当前时间
     if(changeDate>dateDate){//判断是否大于上一次的时间
     $('#').html("");
     return true;
     }else{
     $('#').html("");
     return false;
     }
     }else{
     $('#').html("");
     return false;
     }
     }
     if(changeDate1!=""){
     dateDate=changeDate1;
     }else{
     dateDate=endDate1;
     }
     if(endDate!=""){
     if(endDate<now){//判断是否小于当前时间
     if(endDate>dateDate){//判断是否大于上一次的时间
     $('#').html("");
     return true;
     }else{
     $('#').html("");
     return false;
     }
     }else{
     $('#').html("");
     return false;
     }
     }
     var changeAfter=$('#changeAfter'+i).val();
     if(changeAfter==""){
     return false;
     }
     },
     getprojectCode:function(){
     var str=location.href; //获取本页url地址
     var arr=str.split("?");
     var str1 = arr[1];
     var arr1=str1.split("=");
     return arr1[1];
     },
     show:function(projectCode){
     var projectCode=$(this).getprojectCode();
     $.get("${ctxPath}/register.do?=regisChange&projectCode="+projectCode+"&date="+new Date(),function(data){
    alert(data);
    var alldata=eval('('+data+')');//转换为json对象
    //var projectCode=alldata[0];
    var list=alldata[1];
       $.each(list,function(i){
       if(i==0){
        $("#list").append("<table width='100%' border='0' cellspacing='3' cellpadding='0'><tr>"+
        "<td width='100'>变更日期:</td>"+
        "<td><input name='changeDate' type='text' class='input_M3' id='changeDate' value='"+list[0].changeDate+"'/></td></tr>"+
        "<tr><td>最初变更前:</td>"+
        "<td><input name='changeBefore' type='text' class='input_L02' id='changeBefore' value='"+list[0].changeBefore+"'/></td>"+
        "</tr><tr><td>最初变更后:</td>"+
        "<td><input name='changeAfter' type='text' class='input_L02' id='changeAfter' value='"+list[0].changeAfter+"'/></td></tr>"+
        "<tr><td>截止日期:</td><td>"+
        "<input name='endDate' type='text' class='input_M3' id='endDate' value='"+list[0].endDate+"'/></td>"+
        "</tr></table>");
       //$('input[id$='0']').attr({disabled:"disabled"});
       }else{
       var str="<table width='100%' border='0' cellspacing='3' cellpadding='0'><form id='form"+i+"'><tr>"+
        "<td width='100'>变更日期:</td>"+
        "<td width='370'><input name='ch.changeDate' type='text' class='input_M3' id='changeDate"+i+"' value='"+list[i].changeDate+"'/></td><td>&nbsp;</td></tr>"+
        "<tr><td>变更后:</td>"+
        "<td><input name='ch.changeAfter' type='text' class='input_L02' id='changeAfter"+i+"' value='"+list[i].changeAfter+"'/></td><td>&nbsp;</td>"+
        "<tr><td>截止日期:</td><td>"+
        "<input name='ch.endDate' type='text' class='input_M3' id='endDate"+i+"' value='"+list[i].endDate+"'/></td><td>";
      
       if(list[i].dataStatus==0){
       str=str+"<td><input alt='"+i+"' type='button' id='delete' class='button_blue' value='删  除' />";
       }
       str=str+"<input type='hidden'  id='sbdNum"+i+"' name='ch.sbdNum' value='"+list[i].sbdNum+"'/>"+
        "<input type='hidden'  id='iD"+i+"' name='ch.iD' value='"+list[i].iD+"'/>"+
        "<input type='hidden'  id='changeBefore"+i+"' name='ch.changeBefore' value='"+list[i].changeBefore+"'/>"+
        "<input type='hidden'  id='fk_ChangeProject"+i+"' name='ch.fk_ChangeProject' value='"+list[i].fk_ChangeProject+"'/></td></tr></form></table>";
       $('#list1').append(str);
       if(i<list.length-1){
       $("#list1").append("<div class='line_02'>&nbsp;</div>");
       }
       if(list[i].dataStatus==1){
      
       $('input[id$='+i+']').attr({disabled:"disabled"});
       }
       }
      });
    });
     }
    });
      
    $(this).show();
    $('#delete').live('click', function() {
    var projectCode=$(this).getprojectCode();
    var i=$('#delete').attr("alt");
    var sbdNum=$('#sbdNum'+i).val();
    var iD=$('#iD'+i).val();
        var changeDate=$('#changeDate'+i).val();
        var changeAfter=$('#changeAfter'+i).val();
        var endDate=$('#endDate'+i).val();
        var fk_ChangeProject=$('#fk_ChangeProject'+i).val();
        var changeBefore=$('#changeBefore'+i).val();
    $.get("${ctxPath}/register.do",
    {"":"deleteChange","ch.sbdNum":sbdNum,"ch.iD":iD,
    "ch.changeDate":changeDate,"ch.changeAfter":changeAfter,
    "ch.fk_ChangeProject":fk_ChangeProject,"ch.changeBefore":changeBefore,
    "ch.endDate":endDate,"date":new Date()},
    function(){
    $("#list").html("");
    $("#list1").html("");
    $(this).show();
    });
    });
        

    });</script>
    </head><body class="bg"><table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
       
        <td valign="top" style="padding:20px;">
        <div id="list"></div>
            <div class="line_02">&nbsp;</div>
             <div id="list1"></div>    </td>
      </tr>
    </table></body>
    </html>
    还有你帮我看看,我老感觉这样做太麻烦了,想做个无刷新,但这样js内容就太多了,如果在放个时间插件,校验插件。再从新定制方法,总感觉思路不对,把简单的事情想复杂了,但还是没想出来好的解决办法,求老鸟看看……
      

  2.   

    恩,是后面,楼主用jquery的话调用append写出来的代码需要加livelive直接$("#id").live("click",function(){...})就可以了
      

  3.   

    经历一天终于发现我脑子有点问题,其实没必要用json传数据这么麻烦,无刷新删除的话,直接在前台html(""),后台执行删除就是,没必要再次查询一遍…添加也是.不想改了……都写完了。笨脑子……,不知道还有什么简单的做法吗,给个经验……我才刚工作经验欠缺……
      

  4.   

    父页得到iframe的window作用域就可以调用了,不过父页调用iframe的方法必须是全局的,私有的方法调用不到父页得到iframe的作用域后调用jquery extend的getprojectCode方法
    var win=document.getElementById('iframe的ID').contentWindow;
    if(win.jQuery&&win.jQuery.fn.getprojectCode)//判断是否加载完iframe,未加载完没有jq对象和extend的方法就不执行,防止出错
    alert(win.jQuery.fn.getprojectCode())
      

  5.   

    我找这个win.jQuery.fn.getprojectCode();终于知道怎么调用了,昨天试了各种方法$(win).果断不出……非常感谢