【问题标题】:Query String for pre-filling html form field用于预填充 html 表单字段的查询字符串
【发布时间】:2009-10-06 02:04:42
【问题描述】:

我为一个拥有独立分会网站的组织管理网站。每个章节链接到的主网站上都有一个会员注册表单。在表格上有一个下拉框,允许人们选择他们想要加入的章节。我想做的是让每个章节网站使用一个特定的链接到表单,该表单将从下拉框中预先选择他们的章节。

在网上搜索后,我发现我可能需要使用 Javascript 函数来使用查询字符串。经过我所有的搜索,我仍然无法弄清楚要使用的确切代码。该页面是一个基本的 HTML 页面...没有 php,它托管在 linux 服务器上。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    如果您像这样格式化您的网址:

    www.myorg.com?chapter=1

    您可以将此脚本添加到您的 html 头中:

     function getparam(name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regexS = "[\\?&]" + name + "=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(window.location.href);
        if (results == null)
            return "";
        else
            return results[1];
    }
    
    function loadform()
    {
    
      var list = document.getElementById("mychapterdropdown");
      var chapter = getparam("chapter");
      if (chapter>=0 && chapter < list.options.length)
      {
        list.selectedIndex = chapter;
      }
    }
    

    在你的 html body 标签中:

    <body onload="loadform();" >
    

    可能会添加更多的验证检查,但这是一般的想法。

    【讨论】:

      【解决方案2】:

      听起来您正在寻找的是 GET 或 POST 请求。例如,如果您的用户从您的表单中选择“Chapter A”并点击选择,您可以允许来自另一个站点的重定向(例如 http://www.yoursite.com/form.html?chapter=A)以允许预选 Chapter A。在 Javascript 中,这是由

      完成的
      var chapter="";
      var queryString = location.search.substring(1);
      if ( queryString.length > 0 ) {
        var getdata = queryString.split("&");
        var keyvalues;
        for(var i=0; i < getdata.length; i++){
          keyvalues = getdata.split("=");
        }
      } else {
        chapter = "Not Found";
      }
      
      document.getElementById( "ChapterID").value = keyvalues['chapter'];
      

      这是未经测试的,所以不要强迫我:)。

      【讨论】:

      • 用户将点击来自章节个人网站的链接,该链接将他们引导至国家(主要)网站。由于这些章节管理自己的站点,它们都有不同的主机,我不管理它们。所以他们想要的只是一个特殊的链接 (form.html?chapter=A),它将在我们的表单上选择他们的章节。您的代码看起来与我见过的其他代码相似,但我有几个问题。 1.“var chapter” - 'chapter' 应该是字段 ID 的名称吗? 2. "chapter = "Not Found"" - 这应该被替换为默认选项的名称吗?
      • 3. "document.getElementById("ChapterID").value = keyvalues['chapter'];" - 我应该用表格中的实际 ID 名称替换 ChapterID 吗?此外,键值 ['chapter'] 我应该将 'chapter' 更改为什么?
      【解决方案3】:

      也许是使用 parse_url 的东西

      $params = parse_url()
      $query = $params['query'];
      
      $query_pairs = explode('&',$query);
      $key_val = array();
      foreach($query_pairs as $key => $val){
          $key_val[$key] = $val;
      }
      

      http://www.php.net/manual/en/function.parse-url.php

      【讨论】:

        【解决方案4】:

        您可能必须使用动态 ajax 内容。使用以下javascript 读取查询字符串,然后使用此javascript 在该div 中加载html 文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-22
          • 1970-01-01
          • 2019-07-01
          • 1970-01-01
          • 2022-01-12
          • 1970-01-01
          • 2013-08-07
          相关资源
          最近更新 更多