【问题标题】:JQuery Dynamic Option Select IssueJQuery 动态选项选择问题
【发布时间】:2015-01-11 16:55:31
【问题描述】:

这是Question的延续

这是动态 JQuery 选项选择生成器的代码。

首先我将选择国家,我没有包含代码,它将返回传递给控制器​​的 CountryID,然后是 RegionID,然后是 CityID。在生成 CityID 选项选择菜单之前,它运行良好,而我移动到 AreaID 时它不起作用。

我缺少什么,我该如何解决?

我无法在第三个 Second One 之后生成菜单。

这是 HTML:

<div id='result' name="result">
<select  id="name">
<option value="" disabled>Please select above</option>
</select>
</div>
<div id='resulta' name="resulta">
<select  id="name">
<option value="" disabled>Please select above</option>
</select>
</div>
<div id='resultb' name="resultb">
<select  id="name">
<option value="" disabled>Please select above</option>
</select>

这是我的脚本:

<script>
  var ab = $.noConflict();
  ab(document).ready(function() {
    ab(document).on("change", "#CountryID", function() {
      var CountryID = ab("#CountryID").val();
      ab.post("globalregiongenerator", {
          CountryID: CountryID
        },
        function(data) {
          ab("#result").html(data);
        });
    });

  });
</script>


<script>
  var ac = $.noConflict();
  ac(document).ready(function() {
    ac(document).on("change", "#RegionName", function() {
      var RegionName = ac("#RegionName").val();
      ac.post("globalcitygenerator", {
          RegionName: RegionName
        },
        function(data) {
          ac("#resulta").html(data);
        });
    });
  });
</script>

<script>
  var ad = $.noConflict();
  ad(document).ready(function() {
    ad(document).on("change", "#CityName", function() {
      var CityName = ad("#CityName").val();
      ad.post("globalareagenerator", {
          CityName: CityName
        },
        function(data) {
          ad("#resultb").html(data);
        });
    });
  });
</script>

这里是服务器端:

public function globalregiongenerator()
    {
    $CountryID = Input::get('CountryID');

    $result = DB::select("SELECT * FROM region where CountryID =$CountryID");
    echo "<select  id='RegionName' name='RegionName'> <option value='' id=''>Select the Area</option>"; 
    foreach ($result as $value) 
    {
    echo "<option value=".$value->RegionID.">".$value->RegionName."</option>";
    }
    echo "</select>";
    }

    public function globalcitygenerator()
    {
    $RegionID = Input::get('RegionName');
    $result = DB::select("SELECT * FROM city where RegionID =$RegionID");
    echo "<select  id='CityName' name='CityName'> <option value='' id=''>Select the Area</option>"; 
    foreach ($result as $value) 
    {
    echo "<option value=".$value->CityID.">".$value->CityName."</option>";
    }
    echo "</select>";
    }

    public function globalareagenerator()
    {
    $CityID = Input::get('CityName');
    $result = DB::select("SELECT * FROM area where CityID =$CityID");
    echo "<select  id='CityName' name='CityName'> <option value='' id=''>Select the Area</option>"; 
    foreach ($result as $value) 
    {
    echo "<option value=".$value->CityID.">".$value->CityName."</option>";
    }
    echo "</select>";
    }

注意:

Uncaught TypeError: undefined is not a function

这是我在控制台中遇到的错误

【问题讨论】:

  • 附注:如果与$ 发生冲突,$.noConflict 将不起作用(应该是jQuery.noConflict())。您还可以使用 快捷方式 DOM 就绪处理程序 jQuery(function($){ YOUR CODE USING A LOCAL $ }); 为您的代码提供本地范围的 $。
  • 请在浏览器中从页面中“另存为”,然后向我们展示 jQuery 看到的生成的 HTML。 :)
  • @TrueBLueAussie :我应该用 jQuery.noConflict 替换 $.noConflict 的所有元素吗?
  • 更简单、更智能地使用这种 DOM 就绪处理程序语法:jQuery(function($){ YOUR CODE USING A LOCAL $ });(但是,是的,您可以只使用jQuery.noConflict())
  • 感谢您的建议,我的问题“未定义”错误已解决。

标签: javascript php jquery html laravel-4


【解决方案1】:

改变

echo "<option value=".$value->CityID.">".$value->CityName."</option>";

到

echo "<option value='".$value->CityID."'>".$value->CityName."</option>";

与其他回声相同。你正在生成

<option value=united states>United States</option>

但它必须是

<option value='united states'>United States</option>

更新:

把它们改成

echo "<option value=\"".$value->CityID."\">".$value->CityName."</option>";

【讨论】:

  • 建议在属性上使用 双引号,以实现与 HTML 标准的最佳兼容性。生成 HTML 时在外部字符串上使用单引号(或在 "s 内使用 \" 分隔)。
  • @TrueBlueAussie 不知道,我以为value='states' 和value="states" 一样。另外我从来没有使用过 php,所以我不确定你是否可以在 php 端使用单引号。
  • 我更新为所有 echo "";如你所说,但它仍然有错误 - Uncaught TypeError: undefined is not a function
  • " 或 ' 将适用于大多数浏览器,但最好坚持使用 "。如果您不能在字符串文字上使用单引号,请使用 \"。还有很多工具无法处理单引号属性。
  • @Stackerman 查看更新。此外,在您的评论中,您还有一个额外的单引号。
猜你喜欢
  • 2020-10-07
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多