【问题标题】:Finding checkbox value, writing to XML result查找复选框值,写入 XML 结果
【发布时间】:2010-08-05 20:15:14
【问题描述】:

我正在创建一个每周 HTML 电子邮件编写模板(因此文件名很奇怪),并且我使用 ASP 和 XML 作为后端。 XML 是完美的,但 ASP 不是..

我在这里要做的是创建一个 XMl 节点,其值为 notchecked 并根据表单上的复选框是否被选中而选中。

我试过了

If Request.QueryString("promotioncheck") = "on" Then
        Set objField = objDom.createElement("promotioncheck")
        objField.Text = "checked"
        objRecord.appendChild objField
Else
        Set objField = objDom.createElement("promotioncheck")
        objField.Text = "notchecked"
        objRecord.appendChild objField
        End If 

但是当我这样做时,它不会接受更改,即使选中了复选框,也只会输出 notchecked。

这是我的 ASP:

<%
If Request.Form("hidden") = "true" Then
    Dim objDom
    Dim objRoot
    Dim objRecord
    Dim objField
    Dim objFieldValue
    Dim objattID
    Dim objattTabOrder
    Dim objPI
    Dim blnFileExists
    Dim x
    Dim z
    Set objDom = server.CreateObject("Microsoft.XMLDOM")
    objDom.preserveWhiteSpace = True



    blnFileExists = objDom.LoadXML(server.mappath("./")& "/eg"&Day(Date)&"_"&Month(Date)&".xml")


    If blnFileExists = True Then

    For x = 1 To Request.Form.Count

    If instr(1,Request.Form.Key(x),"hidden") = 0 Then
        Set z = objDom.selectNodes("eg/stories/"&Request.Form.Key(x))
        Response.Write(Request.Form.Key(x))
        z.innerText = Request.Form(x)
    End If
Next 
Else

    Set objRoot = objDom.createElement("eg")
    objDom.appendChild objRoot
    Set objRecord = objDom.createElement("stories")
    objRoot.appendChild(objRecord)
    For x = 1 To Request.Form.Count


    If instr(1,Request.Form.Key(x),"hidden") = 0 Then
        Set objField = objDom.createElement(Request.Form.Key(x))
        objField.Text = Request.Form(x)
        objRecord.appendChild objField
    End If
    Next
    If Request.QueryString("promotioncheck") = "on" Then
        Set objField = objDom.createElement("promotioncheck")
        objField.Text = "checked"
        objRecord.appendChild objField
    Else
    Set objField = objDom.createElement("promotioncheck")
        objField.Text = "notchecked"
        objRecord.appendChild objField
        End If
End If
If blnFileExists = False then

    Set objPI = objDom.createProcessingInstruction("xml", "version='1.0'")

    objDom.insertBefore objPI, objDom.childNodes(0)
End If


objDom.save (server.mappath("./")& "/eg"&Day(Date)&"_"&Month(Date)&".xml")



Set objDom = Nothing
Set objRoot = Nothing
Set objRecord = Nothing
Set objField = Nothing
Set objFieldValue = Nothing
Set objattID = Nothing
Set objattTabOrder = Nothing
 Set objPI = Nothing

On Error Resume Next
End If
%>

这是带有复选框的 HTML 表单

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
     <title>EG Editor</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <script type="text/javascript">
     var number_of_nibs = 1;

     function addnib(){
     number_of_nibs ++;
     var title = document.createElement('h2');
     title.innerHTML = "Story" + number_of_nibs;
     var nibformtitle = document.createElement('p');
     nibformtitle.innerHTML = "Title:<br><input type=\"text\" name=\"nib"+   number_of_nibs +"_title\" style=\"width: 400px;\">";
     var nibformcontent = document.createElement('p');
      nibformcontent.innerHTML = "Content:<br><textarea cols=\"22\" rows=\"7\" name=\"nib"+ number_of_nibs + "_content\" style=\"width: 400px;\"></textarea>";
     var smallnewsdiv = eval("document.getElementById('smallnews')");
      smallnewsdiv.appendChild(title);
      smallnewsdiv.appendChild(nibformtitle);
      smallnewsdiv.appendChild(nibformcontent);
      }


     </script>
     </head>
     <body>
     <h1>EG Editor</h1>
      <p>Welcome to the EG Editor, your one stop shop for making your EG email</p>
     <p>Please Fill out the form like you would any other internet form, press save when your done</p>
     <p>Once you've saved your content, you can then click on the link to the finished product, save the file as HTML (file->save as->html only option when saving), open in word and then Send to yourself (File->Send To->Mail Recipient) and biggity-bam you've got your issue of EG</p>
    <h2>Main Stories</h2>
    <p>Here is where you put in your stuff for your Main stories</p>
    <form name="form1" action="Egbuilder.asp" method="post">
    <table>
    <tr>
    <td>Story One:</td>
    <td>Title: <input type="text" name="mainstory1_title" style="width: 220px"></td>
    <td>Content: <textarea cols="22" rows="7" name="mainstory1" style="width: 220px;"> </textarea></td>
    </tr>
    <tr>
    <td>Story Two:</td>
    <td>Title: <input type="text" name="mainstory2_title" style="width: 220px"></td>
    <td>Content: <textarea cols="22" rows="7" name="mainstory2" style="width: 220px;"></textarea></td>
    </tr>
    <tr>
    <td>Story Three:</td>
    <td>Title: <input type="text" name="mainstory3_title" style="width: 220px"></td>
    <td>Content: <textarea cols="22" rows="7" name="mainstory3" style="width: 220px;"></textarea></td>
    </tr>
    <tr>
    <td>Story Four:</td>
    <td>Title: <input type="text" name="mainstory4_title" style="width: 220px"></td>
     <td>Content: <textarea cols="22" rows="7" name="mainstory4" style="width: 220px;"></textarea></td>
    </tr>
    </table>
    <h2>Promotions</h2>
    <p>If there's a promotion this week then tick the 'show promotion' box, Just pop your words into the box and then copy the Intranet link into the link box.</p>
   <p>Show Promotion? <input type="checkbox" name="promotioncheck" ></p>
   <p>Banner Text:<br>
   <textarea cols="22" rows="7" name="promotiontext" style="width: 400px;"></textarea></p>
   <p>Intranet Link: <br>
  <input type="text" name="promotionlink" style="width: 400px"></p>
  <div id="smallnews">
  <h2>News in Briefs</h2>
  <p>Here is where you add your smaller stories, you can add as many as you want. Just click the green plus button to add another box</p>
  <h3>Story 1</h3>
  <p>Title:<br>
  <input type="text" name="nib1_title" style="width: 400px"></p>
  <p>Content:<br>
 <textarea cols="22" rows="7" name="nib1_content" style="width: 400px;"></textarea>
  </p>
 </div>
 <p><a href="Javascript:addnib()" title="Press this button to add another button"><img src="images/add.jpg" alt="add button" style="width: 30px; height: 30px; border: 0px">Add another Story</a><input type="hidden" name="hidden" value="true"><input style="margin-left: 200px;" type="submit" value="Save" ></p>
</form>
</body>
 </html>

我确信它真的很简单,我只是错过了一些基本的东西,但任何帮助都将不胜感激。谢谢

【问题讨论】:

  • 请不要发布您的整个代码,让人们弄清楚您想做什么。据我所知,你甚至没有在这里问一个实际的问题。更多描述,更少代码。
  • 对不起,我会扩展它。基本上我的 ASP 代码只是遍历所有提交的表单元素,然后从它们创建一个 XML 文件。我试图添加一种方法来检查是否通过添加 Request.QueryString("promotioncheck") If 语句来检查 HTML 中的复选框,但它不会接受更改。我应该如何改变它呢?

标签: xml forms asp-classic checkbox


【解决方案1】:

您当前正在从 Querystring 中检索 Promotioncheck,但您正在发布表单,因此该值不会在 QueryString 集合中。

而是像这样从 Form 集合中检索值:

Request.Form("promotioncheck") = "on"

我不记得在经典 asp 中没有设置 value 属性的复选框的默认返回值是什么,因此返回了双重检查“on”。

【讨论】:

    猜你喜欢
    • 2018-05-26
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多