【问题标题】:Selecting Checkboxes, Radio buttons and list选择复选框、单选按钮和列表
【发布时间】:2012-12-14 13:18:55
【问题描述】:

我在运行时使用 jQuery/jQuery Mobile 检查/选择单选按钮、复选框和列表样式时遇到问题。

基本上我有一个复选框、单选按钮和选择菜单的列表,我想做的是从数据库中获取值并从复选框/单选按钮组或选择菜单中选择/勾选正确的项目。

这是我尝试过的简单设置,但没有成功。

HTML:

<fieldset data-role="controlgroup">     
  <input type="radio" name="option_radio" id="option_radio_1" value="1" />
  <label for="option_radio_1">Option 1</label>  
  <input type="radio" name="option_radio" id="option_radio_2" value="2" />
  <label for="option_radio_2">Option 2</label>
</fieldset>

<fieldset data-role="controlgroup">     
  <input type="checkbox" name="option_checkbox" id="option_checkbox_1" value="1" />
  <label for="option_checkbox_1">Option 1</label>   
  <input type="checkbox" name="option_checkbox2" id="option_checkbox_2" value="2" />
  <label for="option_checkbox_2">Option 2</label>   
  <input type="checkbox" name="option_checkbox3" id="option_checkbox_3" value="3" />
  <label for="option_checkbox_3">Option 3</label>
</fieldset>

<select name="option_list" id="option_list">
  <option value="20">20</option>
  <option value="30">30</option>
  <option value="40">40</option>
  <option value="50">50</option>
  <option value="60">60</option>
  <option value="70">70</option>
</select> 

JS:

$("#option_checkbox_1").val(option_id); 
$("#option_list").val(optionlist_id);
$('input:radio[name=gender]:checked').val(gender_id);

我尝试将数据库中的值(例如 1/2/3/4 等)从数据库直接传递给元素。

谁能告诉我这应该怎么做?

【问题讨论】:

  • 那么从数据库中获取价值或选择正确的项目有什么问题?
  • @AleksandrM 对不起,我的观点没有说清楚。从数据库中获取值是可以的。问题是选择与数据库中存储的值匹配的单选按钮/复选框/列表项
  • option_id 或 optionlist_id 变量的值是什么?是 0 表示未选中还是 1 表示选中?请说得更清楚。我们需要知道每个变量返回什么值,这样我们才能知道它将如何选择或如何检查某些内容

标签: javascript jquery html jquery-mobile


【解决方案1】:

检查它或给出一个值:

$('#option_checkbox_1').attr('checked', 'checked');
$('input:radio[id=option_radio_1]').attr('checked', 'checked');
$("#option_list").val(50);

并且对于取消检查(通过完全删除属性)做

$('#option_checkbox_1').removeAttr('checked');
$('input:radio[name=gender]:checked').removeAttr('checked');

我想这就是你想要的

$('#option_checkbox_'+option_id).attr('checked', 'checked');
$('input:radio[id='+gender_id+']').attr('checked', 'checked');
$("#option_list").val(optionlist_id);

【讨论】:

  • $('input:radio[name=gender]:checked').attr('checked', 'checked'); 检查检查内容 :)
  • @rkp 例如对于单选按钮组,选择的选项(存储在数据库中)是选项 2。如何检查正确的单选按钮? (其他问题相同)
  • 严格来说checked是一个属性(而不是一个属性),所以要制作一个元素checked:$(selector).prop('checked',true);,去掉勾选:$(selector).prop('checked', false)(不是removeProp()).
  • @AleksandrM 我不想检查检查的内容。我需要根据从数据库返回的值动态检查它们。我正在考虑必须检查从数据库返回的值,然后使用 if/else 使用 rkp 提到的解决方案来设置选中的属性。不确定是否有更简单的出路
  • @user1809790 这就是我之前问的问题。检查状态,选择框的选择取决于变量的值。我们需要知道这些值是什么
【解决方案2】:

$("#option_checkbox_1").val(option_id);

这用于将值分配给元素。

你可以Element with attribute value selector找到元素。

var valueFromDB = "1";
$("input[type='radio']['"+valueFromDB+"']").attr("checked","true");
$("input[type="checkbox"]['"+valueFromDB+"']").attr("checked","true");
$("#option_list option[value="20"]").attr("selected","true");

另一点。

id 是元素的唯一值。您不能将id 用于多个元素。

【讨论】:

    【解决方案3】:

    要选择具有特定值的input 元素:

    $('input[value=' + valueFromDatabase + ']');
    

    然后检查/选择该元素:

    $('input[value=' + valueFromDatabase + ']').prop('checked', true);
    

    这当然可以与其他选择器(例如:radio 或:checkbox)结合使用:

    $('input:radio[value=' + valueFromDatabase + ']').prop('checked', true);
    

    如果数据库中的值包含 any 空格,则值 必须 在选择器中被引用,给出:

    $('input[value="' + valueFromDatabase + '"]');
    

    (注意 `valueFromDatabase 周围的 " 字符。)

    【讨论】:

      【解决方案4】:

      JS 会设置元素的值,它不会检查它们。您要做的是使用 if 语句来查看 radio/checkbox/select 的值是否与您从数据库中提取的字符串的值匹配。如果是,那么您希望像这样设置要检查/选择的属性

      // checkboxes/radios
      $(this).attr('checked','checked')
      
      // options
      $(this).attr('selected','selected')
      

      其中 $(this) = 输入或选项

      【讨论】:

      • 冒着重复自己的风险:checked 是一个属性(而不是一个属性),所以要检查一个元素:$(selector).prop('checked',true);,要删除检查:$(selector).prop('checked', false)(不是removeProp())。
      • @DavidThomas 它确实会引起一些混乱,但选中和选中都通常被 w3c (w3.org/TR/html5/forms.html#the-input-element) 称为属性
      猜你喜欢
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多