本帖最后由 wera091123 于 2010-03-16 20:03:58 编辑

解决方案 »

  1.   

    setService().srvTitle,这样的额写法不对吧
      

  2.   

    //////////////////////////
    /**************************************************************************************************
    第一个问题 setService()给service赋值,但没有获得从页面上传来的值(迫切!!!)
    **************************************************************************************************/
    /**
    *定义一种数据格式
    *
    */
    var service={
    svrId :"0",
    cstCustomer: void(0),
    svrType: "",
    svrTitle: "",
    svrCustName: "",
    svrStatus: "",
    svrRequest: "",
    svrCreateId:"",
    svrCreateBy:"",
    svrCreateDate:"",
    svrDueId:"",
    svrDueTo:"",
    svrDueDate:"",
    svrDeal:"",
    svrDealId:"",
    svrDealBy:"",
    svrDealDate:"",
    svrResult:"",
    svrSatisfy:""
    //toString:function(){return "service";}
    }
    /**
    *判断不为空
    */
    function isEmpty (obj){
    switch(typeof(obj))
    {
    case "number":{if(obj=="0")return true;else return false;}
    case "string":{if(obj=="")return true;else return false;}
    case "boolean":{if(obj=="false")return true;else return false;}
    case "object":{if(obj=="null")return true;else return false;}
    case "undefined":{return true;}
    case "null":{return true;}
    default :{return false};
    }
    }
    /**
    *赋值操作
    */
    function setService(){
    for(var obj in service )

    //if(validate.propertyKind(obj,service)=="property"){
    var objs=$("#"+"service"+"_"+obj.toString());//取值
    if(!(isEmpty(objs))) //判断元素是否存在

    if(!(isEmpty(objs.val())))//判断元素的值是否存在
    {
    var s=objs.val(); 
    service.obj=s; //赋值
    alert(obj+" is "+service.obj);
    }
    }
    //} 
    }
    return service; 
    }
    function test_1(){
    alert(setService().srvTitle);
    }
    /**************************************************************************************************
    第二个问题 用正则匹配一个时间格式 ,但没有匹配到
    **************************************************************************************************/
    function validateTime(timeStr){
    var result=0; //表示时间格式不正确;
    if((typeof timeStr)=="string"&&!(this.isEmpty(timeStr))){
    /**
    * 匹配 2007-08-22[ 00:00:00] 其中” 00:00:00可有可无“
    */

    var text1=new RegExp("/\d{4}-d\{1,2}-\d{1,2}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");

    if(text1.test(timeStr)) {resulst= 1;alert("result "+result);} 
    /**
    * 匹配 08-22-2007[ 00:00:00] 其中” 00:00:00可有可无“
    */
    var text2=new RegExp("/\d{1,2}-d\{1,2}-\d{4}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");
    if(text2.test(timeStr)) {resulst= 2;alert("result "+result);}
    /**
    * 匹配 2007/08/22[ 00:00:00] 其中” 00:00:00可有可无“
    */
    var text3=new RegExp("/\d{4}\/d\{1,2}\/\d{1,2}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");if(text3.test(timeStr)) {resulst= 3;alert("result "+result);}
    /**
    * 匹配 08/22/2007[ 00:00:00] 其中” 00:00:00可有可无“
    */ 
    var text4=new RegExp("/\d{1,2}\/d\{1,2}\/\d{4}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");
    if(text4.test(timeStr)) {resulst= 4;alert("result "+result);} 
    }
    alert("result "+result);
    return result; 
    }
    function test_2(){
    alert(validateTime("1900-01-01 12:20:20"));
    }
    ///////////////////////////////

    <input type="button" onclick="test_1()" value="test_1()" />
    其实整体来说不是什么大问题,主要是LZ太过粗心,还有正则表达式的匹配不是很熟悉,有空多看一些例子,以后就不会犯这种毛病了
      

  3.   


    //////////////////////////
    /**************************************************************************************************
    第一个问题 setService()给service赋值,但没有获得从页面上传来的值(迫切!!!)
    **************************************************************************************************/
    /**
    *定义一种数据格式
    *
    */
    var service={
    svrId :"0",
    cstCustomer: void(0),
    svrType: "",
    svrTitle: "",
    svrCustName: "",
    svrStatus: "",
    svrRequest: "",
    svrCreateId:"",
    svrCreateBy:"",
    svrCreateDate:"",
    svrDueId:"",
    svrDueTo:"",
    svrDueDate:"",
    svrDeal:"",
    svrDealId:"",
    svrDealBy:"",
    svrDealDate:"",
    svrResult:"",
    svrSatisfy:""
    //toString:function(){return "service";}
    }
    /**
    *判断不为空
    */
    function isEmpty (obj){
    switch(typeof(obj))
    {
    case "number":{if(obj=="0")return true;else return false;}
    case "string":{if(obj=="")return true;else return false;}
    case "boolean":{if(obj=="false")return true;else return false;}
    case "object":{if(obj=="null")return true;else return false;}
    case "undefined":{return true;}
    case "null":{return true;}
    default :{return false};
    }
    }
    /**
    *赋值操作
    */
    function setService(){
    for(var obj in service )

    //if(validate.propertyKind(obj,service)=="property"){
    var objs=$("#"+"service"+"_"+obj.toString());//取值
    if(!(isEmpty(objs))) //判断元素是否存在

    if(!(isEmpty(objs.val())))//判断元素的值是否存在
    {
    var s=objs.val(); 
    service.obj=s; //赋值
    alert(obj+" is "+service.obj);
    }
    }
    //} 
    }
    return service; 
    }
    function test_1(){
    alert(setService().srvTitle);
    }
    /**************************************************************************************************
    第二个问题 用正则匹配一个时间格式 ,但没有匹配到
    **************************************************************************************************/
    function validateTime(timeStr){
    var result=0; //表示时间格式不正确;
    if((typeof timeStr)=="string"&&!(this.isEmpty(timeStr))){
    /**
    * 匹配 2007-08-22[ 00:00:00] 其中” 00:00:00可有可无“
    */
    var text1=new RegExp("/\d{4}-d\{1,2}-\d{1,2}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");
    if(text1.test(timeStr)) {resulst= 1;alert("result "+result);} 
    /**
    * 匹配 08-22-2007[ 00:00:00] 其中” 00:00:00可有可无“
    */
    var text2=new RegExp("/\d{1,2}-d\{1,2}-\d{4}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");
    if(text2.test(timeStr)) {resulst= 2;alert("result "+result);}
    /**
    * 匹配 2007/08/22[ 00:00:00] 其中” 00:00:00可有可无“
    */
    var text3=new RegExp("/\d{4}\/d\{1,2}\/\d{1,2}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");
    if(text3.test(timeStr)) {resulst= 3;alert("result "+result);}
    /**
    * 匹配 08/22/2007[ 00:00:00] 其中” 00:00:00可有可无“
    */ 
    var text4=new RegExp("/\d{1,2}\/d\{1,2}\/\d{4}( \d{1,2}:\d{1,2}:\d{1,2}){0,1}$/");
    if(text4.test(timeStr)) {resulst= 4;alert("result "+result);} 
    }
    alert("result "+result);
    return result; 
    }
    function test_2(){
    alert(validateTime("1900-01-01 12:20:20"));
    }
    ///////////////////////////////
      

  4.   

    六楼的,感谢你哈,你还仔细的看了,我的代码,但我相信你肯定没有,把代码拿来测试哈.呵呵,上面的代码是我从项目中抠出来的,因为时间紧急,出现了几处错误,现在我更正下:
      [1]:少了个type(obj)方法,如下:
          type(obj){if(obj===null)return "null"}(typeof(o)方法是不能直接判断null的)
      [2]:<input onclick='test_1()' value="test">
       这两个错误,您 找到了啊,呵呵
    但还有个错,您没有找到哈,如下:
      [3][color=#666699function validateTime(timeStr){
    var result=0; //表示时间格式不正确;
    if((typeof timeStr)=="string"&&!(isEmpty(timeStr))){
    [/color]
    可以对比看下.
       这些错都是因匆忙导致的.
       最主要的错您还没有找到! 如果您把我的代码部署到一个网站项目里,你会发现:
       在我写的setService()中alert出来的是有值的;但在test_2()中alert却没有值!这才是问题的关键所在!!!!
      这个问题,我的老师已经给我解决了,只须改很小的一个地方:请对比看 :
       
        [4] function setService(){
    for(var obj in service )

    //if(validate.propertyKind(obj,service)=="property"){
    var objs=$("#"+"service"+"_"+obj.toString());//取值
    if(!(isEmpty(objs))) //判断元素是否存在

    if(!(isEmpty(objs.val())))//判断元素的值是否存在
    {
    var s=objs.val(); 
    service[obj]=s; //赋值
    alert(obj+" is "+service[obj]);

    }
    }
    //} 
    }
       至于,您对那个时间匹配的做法,您只是通过  new 一个RegExp对象来包括正则表达试的,对正则表达式的 内容似乎没有改变哈,我认为创建与不创建RegExp对象关系不大哈,这个正则我没有好好的验证,只是弄上面的那个问题了,现在主要的问题解决了,向我的老师致敬!,哈哈.