Foxtable(狐表)用户栏目专家坐堂 → 移动开发,使用框架动态生成的网页,如何校验表单数据?


  共有6250人关注过本帖树形打印复制链接

主题:移动开发,使用框架动态生成的网页,如何校验表单数据?

帅哥哟,离线,有人找我吗?
有点蓝
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/28 8:52:00 [只看该作者]

引入js文件一般不会 导致页面问题,错误使用js文件的代码才会有问题。

最终有问题的代码贴出来看看

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/28 10:26:00 [只看该作者]

以下是引用ycwk在2017/3/28 7:18:00的发言:
为什么一加载框架就不行了?

当我一句句的取消屏蔽的时候,发现取消到这句,就又不能 返回了。
       wb.AppendHTML("<script src='../ajax/jquery.mobile/1.1.1/jquery.mobile-1.1.1.min.js'></script>",True)     '引入jquery

 

onclick事件,加入alert看看是否弹出,是否正常执行了代码。

 

如果是浏览器,不是有调试工具吗?

 

如果是微信,用调试工具调试 https://mp.weixin.qq.com/wiki?action=doc&id=mp1455784140&t=0.11732212663628161


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/28 11:05:00 [只看该作者]

当某列为空时,下面这段代码javascript可以弹出提示框,还没有来得及点“确定”,就会再跳转到一个网页,出现同样的提示,如何不跳转网页?

Dim e As RequestEventArgs = args(0)
Dim wb As New weui

        wb.Title="服务满意度调查"

       ' wb.AppendHTML("<div data-theme='g' data-role='header' data-position='fixed'><h1>服务满意度调查</h1></div>")      '页眉     加了点别处就容易丢失滚动条
        'wb.AppendHTML("<div data-theme='g' data-role='footer' data-position='fixed'><h3>咨询电话:0717-6238256</h3></div>")    '页脚
       'wb.AppendHTML("<div data-theme='g' data-role='footer'><h3>咨询电话:</h3></div>")    '页脚                加了点别处就容易丢失滚动条

       wb.InsertHTML("<div data-theme='g' data-role='page' data-position='fixed'>")      '页内容样式     不能加</div>  加在好几个地方都不能正常显示页头页脚
      'wb.InsertHTML("<h3 align='center' style='margin-top:5px'>东软服务满意度调查</h3>")      '插入表头
If e.PostValues.Count = 0 Then '生成增加调查表网页
   '  msgbox("新的")
    wb.AddForm("","form1","SatisSurvey.htm")

 ' wb.InsertHTML("form1","<fieldset data-role='controlgroup' data-Type='horizontal'>")     '起效果了
    With wb.AddRadioGroup("form1","q1","应用软件功能是否满足业务需要?")
                .Add("a1","是").Value="是"      '第一个"是" 是界面输入提示, 第二个"是"是往数据库存的值
                .Add("a2","否").Value="否"         
    End With
   
   
    With wb.AddRadioGroup("form1","q2","应用软件是否容易操作和使用?")
                .Add("b1","是").Value="是"
                .Add("b2","否").Value="否"
    End With

    With wb.AddRadioGroup("form1","q3","应用软件是否容易操作和使用?")
                .Add("c1","是").Value="是"
                .Add("c2","否").Value="否"
    End With

    With wb.AddRadioGroup("form1","q4","项目人员是否有效沟通并及时反馈?")
                .Add("d1","是").Value="是"
                .Add("d2","否").Value="否"
    End With

    With wb.AddRadioGroup("form1","q5","您对项目人员工作态度是否满意?")
                .Add("e1","是").Value="是"
                .Add("e2","否").Value="否"
    End With

    With wb.AddRadioGroup("form1","q6","您对项目人员技术水平是否认可")
                .Add("f1","是").Value="是"
                .Add("f2","否").Value="否"
    End With

    With wb.AddRadioGroup("form1","q7","故障响应速度是否及时")
                .Add("g1","是").Value="是"
                .Add("g2","否").Value="否"
    End With

    With wb.AddInputGroup("form1","ipg1","您对培训讲师专业知识的评价")       'ipg1 和下面的ipg2 ipg3名称一定不能重,重了就弹不出网页
            .AddTextArea("q8",2).Placeholder = "请输入80字以内的备注"
           ' .AddInput("q8","正文","text")     '也可以正常弹出
    End With

    With wb.AddInputGroup("form1","ipg2","您对培训资料的评价")
            .AddTextArea("q9",2).Placeholder = "请输入80字以内的备注"
    End With

    With wb.AddInputGroup("form1","ipg3","现阶段科室急需解决的问题")
            .AddTextArea("q10",3).Placeholder = "请输入120字以内的备注"
    End With
'wb.InsertHTML("form1","</fieldset>")     '把选择改成上下的就需要

    With wb.AddInputGroup("form1","ipg4","您的联系方式")
        .AddInput("科室","科室","text")
        .AddInput("姓名","姓名","text")
        '.AddInput("岗位","岗位","text")
        .AddSelect("岗位","岗位","医生|护士|财务人员|工程师|行政人员")     '第一个是数据库字段,第二个是 左边的提示
        .AddInput("电话","电话","text")
        .AddInput("提交日期","提交日期","date")
    End With

   With wb.AddButtonGroup("form1","btg1",True)
        .Add("btn1", "确定", "submit").Attribute= ""      '.Attribute =""
   End With

    With wb.AddDialog("","dlg2", "错误","") '弹出增加订单失败提示框   javascript弹出的
            .AddButton("btnOK","确定")
    End With

   wb.AppendHTML("<script src='../ajax/libs/ajaxform.js'></script>") '引入脚本文件

   e.WriteString(wb.Build)

'wb.AppendHTML("<div data-theme='g' data-role='page' data-position='fixed'>")      '页内容
'wb.InsertHTML("</div>")

Else '保存新增的调查单
       '以下为验证表单数据是否正常

         Dim nms() As String = {"q1","q2","q3","q4","q5","q6","q7","q8","q9","q10","科室","姓名","岗位","电话","提交日期"}      '不能为空的列名数组 
            For Each nm As String In nms
                 
                  'If e.PostValues.ContainsKey(nm) = False Then '生成错误提示页 
                If e.PostValues(nm)="" Then '生成错误提示页 
                
                    e.WriteString("请输入的提示" & nm & "!")
                    Return 1   '必须返回
                End If
            Next



    nms= new String(){"q1","q2","q3","q4","q5","q6","q7","q8","q9","q10","科室","姓名","岗位","电话","提交日期"}
    Dim dr As DataRow = DataTables("满意度调查表").AddNew()
    For Each nm As String In nms
        dr(nm) = e.PostValues(nm)
 '   msgbox(nm & e.PostValues(nm))    ' dr(nm) 为空值
    Next
    dr.Save()


    e.WriteString("ok")
End If
  'wb.AppendHTML("<script src='../ajax/libs/test.js'></script>",True)          'by wk
'  e.WriteString(wb.Build) '生成网页
[此贴子已经被作者于2017/3/28 11:29:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/28 11:29:00 [只看该作者]

贴出你调用显示 Dialog 的代码。


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/28 11:29:00 [只看该作者]

单独做个实例上来测试。


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/28 11:31:00 [只看该作者]

ajaxform.js代码 ,我感觉  else 下面的代码有问题,  通过msgbox发现, 报错后,else仍然又执行了一次。  在httprequest 中代 case   satissurvey.htm  下面加代码发现,  case被执行了两次。为什么会这样?

function myfunction(){
    var result = submitAjaxForm('form1','',false);
    if (result =='OK') {show('dlg1')}
    else {showDialog('dlg2','错误',result)}
}


httprequest 的代码

try

    Select Case e.host
        Case "192.168.1.153","127.0.0.1","ycyysf.viphk.ngrok.org"
            Dim dr As DataRow
            Dim url As String
            Dim wechatserv As WeChat.WeChatPublicNo
            If e.Path > "" Then
                url = "http://" & e.host & "/" & e.Path.replace("\","/").replace("'","''").replace("""","""""") & "/"

                wechatserv = Functions.Execute("WeChat_GetServerByUrl",url) '查询是否有此地址的微信公众号
            End If

               '  Dim xo As XObject = XObject.Parse(e.PlainText)
                ' msgbox(xo("MsgType"))
          ' msgbox(e.PlainText)
          ' msgbox(xo("MsgType"))     And xo("MsgType")<>"event" 
              If (wechatserv  IsNot Nothing )   Then
                      wechatserv.ProcessMessage(e,"WeChat_ProcessRequestMsg") '处理消息并获取返回值
                     'Functions.Execute("LogText","回复=" & weRet)                       
              Else
                '通用事件头
                '如果网页路径定义了中间目录,如"ordertest/logon.htm" ,则下面的fl实际就是"d:\web\ordertest\weui\weui.me.js"
                '因此你需要把WeUI框架三个文件复制到"d:\web\ordertest\weui"目录下
                Dim fl As String = "d:\web\" & e.path

                If filesys.FileExists(fl)
                    Dim idx As Integer = fl.LastIndexOf(".")
                    Dim ext As String  = fl.SubString(idx)

                    Select Case ext
                        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".html",".htm",".zip",".rar"
                            e.WriteFile(fl)
                            Return '这里必须返回
                    End Select

                End If
  '     msgbox(e.Path)
       Select Case e.Path        'case 以下只处理动态生成的页面,如果是静态页面,上面早就发出去了.

      Case "accept.htm"
     '以下代码 是把提交的表单数据显示在网页上.
          Dim sb As New StringBuilder
          sb.AppendLine("接收到的数据有:<br/><br/>")
          For Each key As String In e.Values.Keys
     msgbox(e.values("fname1"))
     msgbox(e.Values(key))
            sb.AppendLine(key & ":" & e.Values(key) & "<br/>")
          Next
          e.WriteString(sb.ToString)

         Case "xdf\Service\ApplyService.htm"       
              Functions.Execute("ApplyService",e)
         Case "xdf\OPER\Exam.htm"
              Functions.Execute("Exam",e)
         Case "xdf\OPER\CCShouldKnow.htm"         'CC计算机中心应知应会                           Functions.Execute("CCShouldKnow",e) 

         Case "xdf\Service\SatisSurvey.htm"         '这里只处理动态生成的页面,如果是静态页面,上面早就发出去了. 
               msgbox("我发起的")
           '  msgbox(e.path)
              Functions.Execute("SatisSurvey",e) 
         Case "xdf\Service\SoftRequire.htm"
              Functions.Execute("SoftRequire",e) 
         Case "gettoken" '做为AccessToken中控服务
               Dim atoken As WeChat.AccessToken = WeChat.WeChatAccessTokenController.GetServiceAccessToken(e.PlainText)
               e.WriteString(atoken.ToJson()) '返回access_token的JSON数据
         Case "scanlogon" '做为AccessToken中控服务
               Functions.Execute("Http_ScanLogon" ,e)
         Case Else
               If e.Path.StartsWith("ordertest\") Then '公众号订单测试地址前缀都统一使用这个
                     Functions.Execute("Order_HttpRequest",e)
               ElseIf e.Path.StartsWith("review\") Then '企业号订单审核地址前缀都统一使用这个
                     Functions.Execute("Order_HttpReview",e)
               End If
         End Select      'e.path 的配对
            End If
    End Select     'e.host的配对
    '记录接收的消息,方便分析
    Dim str As new StringBuilder
    'str.AppendLine("host=" & e.host)
    str.AppendLine("path=" & e.Path)
    str.AppendLine("HttpMethod=" & e.Request.HttpMethod)
    'str.AppendLine("poststring=" & e.PlainText)
    'str.AppendLine("ip=" & e.Request.RemoteEndPoint().Address.ToString())
    For Each key As String In e.Values.Keys
        str.AppendLine(key & "=" & e.Values(key))
    Next
    Functions.Execute("logText",str.ToString)
catch ex As Exception
    Functions.Execute("LogText",ex)
    e.WriteString("")
End Try
[此贴子已经被作者于2017/3/28 11:48:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/28 12:00:00 [只看该作者]

demo如下:  httprequest 在触发错误后,还会再执行一次

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目7.rar



 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/28 12:42:00 [只看该作者]

这句代码有问题

 

With wb.AddButtonGroup("form1","btg1",True)

    .Add("btn1", "确定", "submit").Attribute="" 
End With

 

如果是 submit 按钮,会直接提高form1的,自然会跳转。

 

要这样处理     wb.AddForm("","form1","addnew.htm").Attribute="onsubmit='return myfunction()'"

 

你的myfunction函数,要return false 或者 return true 控制是否提交 form1


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/28 14:47:00 [只看该作者]

改成   wb.AddForm("","form1","addnew.htm").Attribute="onsubmit='return myfunction()'"     后

javascript的弹出框没有了,只有第二个跳转提示了。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/28 15:51:00 [只看该作者]

myfunction 函数里面,控制好return 什么。不成功就return false,成功就 return true


 回到顶部
总数 47 上一页 1 2 3 4 5 下一页