【问题标题】:jquery country select when country is saved already?jquery国家选择何时国家已经保存?
【发布时间】:2009-07-28 09:12:43
【问题描述】:

我对下面的这个 jquery 代码有疑问。如果您可以提供帮助,请给我建议或代码

所以我有一个国家下拉列表、一个美国的州下拉列表和一个非美国用户的州输入字段。

当您从国家列表中选择 USA 时,它会隐藏 othstate 字段,当您选择除美国以外的任何国家时,它会隐藏 USA statelist 并显示输入字段

到目前为止一切顺利,现在问题出在此处,此代码适用于注册表单,但不适用于编辑用户位置。

当用户在访问编辑页面时已经将这些数据保存在 mysql/php 中时,它将无法正常工作。我在想的 1 个解决方案是拥有 2 个 javascript 函数并使用 PHP 根据所在国家/地区来解析正确的函数,如果他们有其他国家然后美国保存,它将处理该问题,它将加载选择英格兰的示例,但会显示美国状态而不是状态输入字段和副。

但仍有 1 个主要问题。如果你选择一个非美国国家,然后你会得到 othstate 输入框,然后你可以输入数据,现在假设我这样做并输入了一些数据,然后从国家列表中选择了美国,它会隐藏我输入的数据让我选择一个州。

问题出在 PHP 的后端,我检查文本输入是否为空或状态是否为空,这个缺陷将允许两者都保存数据。

我希望这是有道理的,我希望你的意见和帮助

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
   locationlist();
});

function locationlist() {
    $('#othstate').hide();
    $('#country').change( function() {         
        var val = $(this).val();
     if (val == 223) {
         $('#state').val('').show();
         $('#othstate').hide();
     }else {
        $('#state').val('').hide();
        $('#othstate').show();
     }
   });
 }
</script>

<form method="post" name="form1">
   <select style="background-color: #ffffa0" name="country" id="country">
      <option>Select Country</option>
      <option value="223" selected="selected">USA</option>
      <option value="224">Canada</option>
      <option value="225">England</option>
      <option value="226">Ireland</option>
   </select>
<div id="state">
   <select style="background-color: #ffffa0" name="state" id="state">
      <option>Select State</option>
      <option value="1">Florida</option>
      <option value="2">New York</option>
      <option value="3" selected="selected">Georgia</option>
      <option value="4">California</option>
   </select>
</div>
<div id="othstate"><input type="text" name="othstate" id="othstate" value="" class="textBox"></div>

【问题讨论】:

    标签: jquery


    【解决方案1】:

    不只是隐藏输入/选择,而是禁用它。这将防止将值表单发布到您的服务器。

    function locationlist() {
        $('#othstate').hide().attr("disabled", "disabled");
        $('#country').change( function() {         
            var val = $(this).val();
            if (val == 223) {
             $('#state').val('').show().removeAttr("disabled");
                 $('#othstate').hide().attr("disabled", "disabled");
            }else {
                $('#state').val('').hide().attr("disabled", "disabled");
                $('#othstate').show().removeAttr("disabled");
            }
        });
    }
    

    【讨论】:

    • 我会试试的,谢谢,只是一个简单的问题,我看到你已经为所有字段添加了禁用,是否应该再次启用一些?我真的不知道我在说什么
    【解决方案2】:

    我读了两期(如果我错了,请澄清)

    1) 使用注册页面,PHP 可能会收到 两个 填写的字段。

    1> Joel Potter 的建议有效。


    2) 重用编辑页面的代码

    2> 听起来您需要 PHP 为输入插入默认值。除此之外,我不确定是否还有其他高级问题——这只是实施问题。

    我想到的选项:

    客户端 = 让 js 代码轮询(通过 ajax)服务器获取信息,然后插入这些值。

    server-side = PHP 可以直接输入文本输入的值。至于下拉菜单,我不确定如何在 html

    【讨论】:

    • 嗨,这已经生效了,php 在页面上有选择的选项,问题是如果他们把英格兰保存为那里的国家,即使 php 将英格兰解析为选中,美国各州仍然会显示在编辑页面上,因为仅当您实际更改国家/地区列表时,状态下拉列表与状态输入才会更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多