【问题标题】:jquery/php hide/show didn't work when i view my page with an id当我查看带有 id 的页面时,jquery/php 隐藏/显示不起作用
【发布时间】:2016-10-19 22:55:33
【问题描述】:

我有一个带有 jquery 脚本的表单,可以显示/隐藏一些 div(私人表单内容和公司表单内容)。当我查看我的页面时,我可以在私人表格和带有单选按钮的公司表格之间进行选择。但是,如果我查看带有 id 的页面(例如 mypage?id=1),则在我单击右侧单选按钮之前,内容不会显示。

这是我的代码:

$(function () {
$('#company_fields').hide();
$('#private_fields').hide();

$("input[name=art]:radio").change(function () {

    if ($('input[name=art]:checked').val() == "company") {
        $('#private_fields').hide();
        $('#company_fields').show();

    } else if ($('input[name=art]:checked').val() == "private") {
        $('#private_fields').show();
        $('#company_fields').hide();

    }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<form>
 <label for="company" class="radio-inline">
   <input type="radio" name="art" id="comp_yes" value="private"> private
   </label>
                           
 <label for="company" class="radio-inline">
   <input type="radio" name="art" id="comp_no" value="company"> company
   </label>
</form>


<div id="private_fields">
  <div class="form-group">
  <label for="textinput" class="control-label">Street</label>
  <input type="text" class="form-control" name="street" id="street" placeholder="">
  </div>
</div>

<div id="company_fields">
  <div class="form-group">
  <label for="textinput" class="control-label">Company</label>
  <input type="text" class="form-control" name="company" id="company" placeholder="">
  </div>
</div>

我的单选按钮输入如下所示(代码编辑器不理解 php):

<input type="radio" name="art" id="comp_no" value="private" <?php if (isset($_GET['id'])) {echo $row->art == "private" ? 'checked="checked"' : "";}?>> private

我希望任何人都可以帮助我显示内容,直到我查看带有 id 的页面。右单选按钮被选中,但内容不会显示..我的查询代码一切都错了:/

抱歉英语不好..

【问题讨论】:

  • 不是问题,只是&lt;label&gt;标签中误用了for属性:"...如果指定了属性,属性的值必须是的ID与标签元素在同一文档中的可标记元素..." (W3C)

标签: php jquery


【解决方案1】:

页面加载时不会触发更改事件。您可以在定义后手动触发事件。

$(function () {
    $('#company_fields').hide();
    $('#private_fields').hide();

    $("input[name=art]:radio").change(function () {

        if ($('input[name=art]:checked').val() == "company") {
            $('#private_fields').hide();
            $('#company_fields').show();

        } else if ($('input[name=art]:checked').val() == "private") {
            $('#private_fields').show();
            $('#company_fields').hide();

        }
    }).trigger('change');

});

或者您可以直接通过 PHP 隐藏/显示 div。

【讨论】:

  • 您可以在.change(function() { ... })之后直接添加.change()。无需为无线电输入查询 DOM 两次。而且,恕我直言,我建议使用.trigger("change") 来更清楚您的意图。
猜你喜欢
  • 2012-12-29
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2017-03-18
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多