【问题标题】:Jquery select based on radio button value基于单选按钮值的jQuery选择
【发布时间】:2014-03-26 14:54:28
【问题描述】:

我已经查看了大约 10 个类似的问题,但还没有找到适合我的情况的解决方案。我不确定我的问题出在选择器上、我测试“if”的方式上,还是我尝试显示/隐藏字段的方式上。

如果单选按钮 name="wpbpp_settings[slideshow]" 的值为 "false",我想隐藏 name="wpbpp_settings[slideshowSpeed]" 的输入

这是我的表格:

<div class="wrap">
    <h2>WP Blossom PuckPros Theme Options</h2>

    <form method="post" action="options.php">

        <?php settings_fields('wpbpp_settings_group'); ?>

        <h4><?php _e('Excerpt Length for Wide Page Slider', 'wpbpp_domain'); ?></h4>
        <p>
            <label class="description" for="wpbpp_settings[excerpt_length]"><?php _e('Enter the excerpt length (number of words)', 'wpbpp_domain'); ?></label>
            <input id="wpbpp_settings[excerpt_length]" name="wpbpp_settings[excerpt_length]" type="number" min="20" max="55" step="1" value="<?php echo $wpbpp_options['excerpt_length']; ?>"/>
        </p>

        <h4><?php _e('Settings for Wide Slider', 'wpbpp_domain'); ?></h4>

        <?php
           if (!isset($wpbpp_options['slideshow'])) {

           $wpbpp_options['slideshow']='false';
               }

        ?>

        <p>
            <label class="description" for="wpbpp_settings[slideshow]"><?php _e('Do you want the slider to advance automatically?', 'wpbpp_domain'); ?></label>
            <input id="wpbpp_settings[slideshow]1" name="wpbpp_settings[slideshow]" type="radio" <?php if($wpbpp_options['slideshow'] == 'true') echo 'checked="checked"'; ?> value="true" />Yes
            <input id="wpbpp_settings[slideshow]2" name="wpbpp_settings[slideshow]" type="radio" <?php if($wpbpp_options['slideshow'] == 'false') echo 'checked="checked"'; ?> value="false" />No

         </p>
         <p>   
            <label class="description" for="wpbpp_settings[slideshowSpeed]"><?php _e('How often do you want the slider to advance (number of seconds)?', 'wpbpp_domain'); ?></label>
            <input id="wpbpp_settings[slideshowSpeed]" name="wpbpp_settings[slideshowSpeed]" type="number" min="1" max="8" step="1" value="<?php echo $wpbpp_options['slideshowSpeed']; ?>"/>
        </p>

        <p class="submit">
            <input type="submit" class="button-primary" value="<?php _e('Save Options', 'wpbpp_domain'); ?>" />
        </p>

    </form>

</div>

和我的 jquery:

<script  type="text/javascript">

jQuery(document).ready(function($) {

  togglefields();

  $('input:radio[name="wpbpp_settings[slideshow]"]').val().change(function() { togglefields(); });
});   


  function togglefields() { 
   if ($('input:radio[name="wpbpp_settings[slideshow]"].prop("checked", true)').val() =="true") {
      $('input:radio[name="wpbpp_settings[slideshowSpeed]"]').show();
    } else {
       $('input:radio[name="wpbpp_settings[slideshowSpeed]"]').hide();
    }   

</script>

_______ 编辑 ______________

所以现在我已经接近了。我的问题是我的“if”语句总是评估为“true”。

这是修改后的 jquery:

<script  type="text/javascript">

jQuery(document).ready(function($) {

  togglefields();

  $('input[name="wpbpp_settings[slideshow]"]').change(function(){ togglefields() });

});   

  function togglefields() { 
   if (jQuery('input[name="wpbpp_settings[slideshow]"]').val() =="true") {
      jQuery('input[name="wpbpp_settings[slideshowSpeed]"]').show();
      alert ('show');
    } else {
       jQuery('input[name="wpbpp_settings[slideshowSpeed]"]').hide();
       alert ('hide');

    }   
   }
</script>

【问题讨论】:

  • 您缺少右括号。
  • .val().change( 你说? .val() 不包含 change 方法 - 应该在控制台中列出...检查控制台!
  • @pmandell 我反映了这些更改以及更多内容,但 if 语句仍然存在问题。请参阅修订后的问题定义。

标签: jquery jquery-selectors radio-button


【解决方案1】:

尝试将jQuery('input[name="wpbpp_settings[slideshow]"]').val() 记录到控制台中。看看你是否进行了正确的比较。你的方法应该是:

  1. 选择带有name="wpbpp_settings[slideshow]"的单选按钮组
  2. 找到该组的选中按钮
  3. 找到它的价值
  4. 比较并做任何你想做的事

    var selectedButton=$("input[name='wpbpp_settings[slideshow]']"]:checked"); var value = selectedButton.val();

甚至是,

var selectedValue = $("input[name='wpbpp_settings[slideshow]']"]:checked").val();

看看你在selectedValue得到了什么,然后做进一步的比较。

【讨论】:

  • 我花了一段时间来看看如何构建你的建议,但我终于把它修好了。谢谢。
【解决方案2】:

您正在寻找单选按钮的选中属性。 .val() 不会让你这么做。

改为检查属性

// This would give you info whether the radio is checked or not
  if (jQuery('input[name="wpbpp_settings[slideshow]"]').is(':checked')) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多