无法在单选按钮中设置checked属性(表格内的单选按钮)

时间:2015-09-28 17:16:37

标签: javascript php jquery html mysql

我尝试将单选按钮设置为{{ field.replace(regexp, "") }} ,但这似乎不起作用。 我尝试过使用

  1. $(id_radio).prop( '检查',TRUE);
  2. document.getElementById(“id_radio”)。checked = true;
  3. document.getElementById(“id_radio”)。checked = true;
  4. 的document.getElementById( “id_radio”)检查;
  5. $(id_radio).attr( '检查',检查);
  6. 但他们似乎都没有将checked="checked"的属性更改为checked

    以下是我的代码 js_file.js

    checked="checked"

    我创建表格的代码

    $(document).ready(function(){
    $("document").on("click",".class_radio3",function(){
    
      var id_radio=$(this).attr('value');
      $(id_radio).prop('checked',true);
      console.log(id_radio);
    });
    });
    

    可能是什么问题?任何见解/解决方案?作为PhP的初学者,任何建议都会有所帮助。谢谢

      

    请注意   它打印出正确的id,所以我不认为它的选择问题

    旁注:如果我尝试在

    使用e.preventDefault,则会出现另一个问题
        <br>
        <p class="uk-text-primary uk-text-bold"><u> General Message </u></p>
        <table class="uk-table uk-border-rounded uk-grid-width-* uk-panel-box uk-text-justify" border="1">
            <!--create top table -->
            <tr> <!--tr defines a row --> <!-- define row 1 -->
                <th class="uk-width-1-10"> Recipient </th> <!-- th defines a header cell--> 
                <th class="uk-width-1-3"> Message </th>
                <th class="uk-width-1-10"> Action </th>
                <th class="uk-width-1-10"> Default message </th>
            </tr>
             <!-- row 2 : display results onwards and creates dynamically -->   
            <!-- input fields at the bottom -->
    
    
                <?php
                    include "../connect.php"; 
                    $get_data2admin = $db->query("SELECT ID,message,user FROM test_table_1 WHERE user='General'");
    
    
                if( $get_data2admin->num_rows >0 ){ //if selected rows is more than zero
                    while($row_msg = $get_data2admin->fetch_assoc()){
    
                        $row_msg_id=$row_msg['ID']; //$row_msg['ID'] directly using it wont display in id tag attribute
                        echo "<tr>";
                        echo "<td>".$row_msg['user']."</td>";
                        echo "<td>".$row_msg['message']. "</td>";
    
                        ?>
    
                        <td><a href="#" id="<?php echo $row_msg_id; ?>" class="delete_button uk-text-danger">Delete</a></td>
    
                        <?php 
                        if($row_msg['user']=='General'){
                            echo "<td>"."<input class='class_radio3' type='radio' name='name_radio2' value='$row_msg_id' checked=''/>"."</td>";
    
                        }
                        else{
                            echo "<td>"."-"."</td>"; 
                        };
    
                        echo "</tr>";
                    }
                }
    
            ?>
    </table>
    

    单选按钮变得无法点击。为什么会这样?

      

    更新1:图片是什么问题   Picture of issue

    console

3 个答案:

答案 0 :(得分:0)

我认为这里有几个问题......一个是每组只能检查一个无线电 - 即具有相同&#34;名称&#34;的无线电。让checked=""checked="checked"相同 - 完全没有属性是&#34;未经检查&#34;状态。

&#13;
&#13;
div {
  width: 50%;
  float: left;
}
&#13;
<div>
  <h1>Group 1</h1>
  <p><input type="radio" name="group1" value="1" checked="checked" />1</p>
  <p><input type="radio" name="group1" value="2" checked="checked" />2</p>
  <p><input type="radio" name="group1" value="3" checked="checked" />3</p>
  <p><input type="radio" name="group1" value="4" checked="checked" />4</p>
  <p><input type="radio" name="group1" value="5" checked="checked" />5</p>
</div>
<div>
  <h1>Group 2</h1>
  <p><input type="radio" name="group2" value="1" checked="checked" />1</p>
  <p><input type="radio" name="group2" value="2" />2</p>
  <p><input type="radio" name="group2" value="3" />3</p>
  <p><input type="radio" name="group2" value="4" />4</p>
  <p><input type="radio" name="group2" value="5" />5</p>
</div>
&#13;
&#13;
&#13;

其次,在你的代码中,你说(如果我理解PHP正确输出的是什么),点击此输入(radio),设置id与我的值&property属性相同的东西& #34;检查&#34;为真。带有id的东西是a标签。 a标记没有此选中的属性。请参阅下文,我将其背景设置为红色(通过课程),而不是。

默认情况下,单击会检查单选按钮,因此您无需重复此默认行为。

我还更新了代码,以便在输入值发生变化时进行响应,而不是单击文档并且目标是输入时。听取比你更广泛的范围更有限的范围,性能要轻一些。您使用的方法过去被称为&#34; live&#34; jQuery中的监听器更适合于JS添加和删除您在页面上监听的元素;在你的情况下,PHP正在渲染它们,所以我们不需要它。

此外,jQuery选择器需要#来表示id,.来表示类,如果没有这些选择器,它会假定它是一个标记。请参阅下面我附加#以选择带有ID的a。

&#13;
&#13;
// This is listening for any radio buttons who were clicked, instead of any clicks on the document (it's a little more efficient)
$("input[type=radio]").on("change", function() {

  // get the other radio buttons in this group
  var $group = $('input[name=' + $(this).attr('name') + ']');

  // Go through the group and if the input is checked, add the class to the corresponding element, otherwise, remove it
  $group.each(function() {
    var id_radio = "#" + $(this).attr('value');
    if ($(this).is(":checked")) {
      $(id_radio).addClass("radio-is-checked");
    } else {
      $(id_radio).removeClass("radio-is-checked");
    }
  });


});
&#13;
.radio-is-checked {
  background: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="uk-text-primary uk-text-bold"><u> General Message </u>
</p>
<table class="uk-table uk-border-rounded uk-grid-width-* uk-panel-box uk-text-justify" border="1">
  <!--create top table -->
  <tr>
    <!--tr defines a row -->
    <!-- define row 1 -->
    <th class="uk-width-1-10">Recipient</th>
    <!-- th defines a header cell-->
    <th class="uk-width-1-3">Message</th>
    <th class="uk-width-1-10">Action</th>
    <th class="uk-width-1-10">Default message</th>
  </tr>
  <!-- row 2 : display results onwards and creates dynamically -->
  <!-- input fields at the bottom -->

  <tr>
    <td>$row_msg['user']</td>
    <td>$row_msg['message']</td>
    <!-- Since the radio in this row is checked by default, also apply the corresponding class -->
    <td><a href="#" id="one" class="delete_button uk-text-danger radio-is-checked">Delete</a>
    </td>
    <td>
      <input class='class_radio3' type='radio' name='name_radio2' value='one' checked />
    </td>
  </tr>
  <tr>
    <td>$row_msg['user']</td>
    <td>$row_msg['message']</td>
    <td><a href="#" id="two" class="delete_button uk-text-danger">Delete</a>
    </td>
    <td>
      <input class='class_radio3' type='radio' name='name_radio2' value='two' />
    </td>
  </tr>
  <tr>
    <td>$row_msg['user']</td>
    <td>$row_msg['message']</td>
    <td><a href="#" id="three" class="delete_button uk-text-danger">Delete</a>
    </td>
    <td>
      <input class='class_radio3' type='radio' name='name_radio2' value='three' />
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

第三,&#34;默认&#34;要检查单选按钮的行为。通过执行e.preventDefault您取消默认行为,所以它不会被检查!

答案 1 :(得分:0)

试试这个 HTML

  if($row_msg['user']=='General'){
 echo "<td>"."<input id='$row_msg_id' class='class_radio3' type='radio' name='name_radio2' value='$row_msg_id' />"."</td>";

                        }

JS

var id_radio=$(this).attr('id');
  $('#' + id_radio).prop('checked',true);

答案 2 :(得分:0)

检查以下内容,

您可以像下面一样使用 attr ,但我建议您使用 prop

var arrayLocation = 5;
function chk(element) {
  
  $(element).attr("checked", "checked");

}