Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$(“radioButton”).change(…)在取消选择期间不触发_Javascript_Jquery_Html_Radio Button - Fatal编程技术网

Javascript jQuery$(“radioButton”).change(…)在取消选择期间不触发

Javascript jQuery$(“radioButton”).change(…)在取消选择期间不触发,javascript,jquery,html,radio-button,Javascript,Jquery,Html,Radio Button,大约一个月前,米特的问题没有得到回答。可悲的是,我现在也遇到了同样的情况 情况是这样的:我使用jQuery捕获单选按钮中的更改。选择单选按钮后,我将启用编辑框。当单选按钮被取消选中时,我希望编辑框被禁用 赋能机制发挥了作用。当我在组中选择其他单选按钮时,不会触发更改事件。有人知道如何解决这个问题吗 <input type="radio" id="r1" name="someRadioGroup"/> <script type="text/javascript">

大约一个月前,米特的问题没有得到回答。可悲的是,我现在也遇到了同样的情况

情况是这样的:我使用jQuery捕获单选按钮中的更改。选择单选按钮后,我将启用编辑框。当单选按钮被取消选中时,我希望编辑框被禁用

赋能机制发挥了作用。当我在组中选择其他单选按钮时,不会触发更改事件。有人知道如何解决这个问题吗

<input type="radio" id="r1" name="someRadioGroup"/> 

<script type="text/javascript">
    $("#r1").change(function () {
        if ($("#r1").attr("checked")) {
            $('#r1edit:input').removeAttr('disabled');
        }
        else {
            $('#r1edit:input').attr('disabled', true);
        }
    });
</script>
看起来只有在选中单选按钮时才调用change函数,而不是在取消选中时。我使用的解决方案是将更改事件绑定到每个单选按钮:

$("#r1, #r2, #r3").change(function () {
或者您可以为所有单选按钮指定相同的名称:

$("input[name=someRadioGroup]:radio").change(function () {
以下是根据克里斯·波特的评论更新的作品

根据@Ray的评论,您应该避免将名称用于。在他们里面。这些名称在jQuery1.7.2中有效,但在其他版本中无效


以下是您可以通过名称一次绑定到所有单选按钮的

$('input[name=someRadioGroup]:radio').change(...);
此处的工作示例:

这通常对我有效:


如果$r1.is:checked{}

假设这些单选按钮位于具有id单选按钮且单选按钮具有相同名称(例如commonName)的div内,则:


我的问题与此类似,这对我很有效:

$('body').on('change', '.radioClassNameHere', function() { ...

使用Ajax,对我来说:

Html:

和php:

//// Get Value
$id = mysqli_real_escape_string($db, $_GET['id']);

//// Insert to database
$insert = mysqli_query($db, "UPDATE [TABLE] SET [column] = '$id' WHERE [...]");

//// Show radio buttons again
$mysqliAbfrage = mysqli_query($db, "SELECT [column] FROM [Table] WHERE [...]");
                  while ($row = mysqli_fetch_object($mysqliAbfrage)) {
                    ...
                  }
                  echo" 
                  <form name='nameOfForm'>
                      <p><b>Your headline</b></p>
                      <input type='radio' name='nameOfRadio' value='seed'"; if ($interviewStage == 'seed') {echo" checked ";} echo" onchange='funcInterviewStage()'><label>Yourr Label</label><br>
                      <input type='radio' name='nameOfRadio' value='startup'"; if ($interviewStage == 'startup') {echo" checked ";} echo" onchange='funcInterviewStage()'><label>Your label</label><br>

                  </form> ";
取消选择时未触发的更改事件是所需的行为。您应该在整个单选组上运行选择器,而不仅仅是单个单选按钮。您的无线组应具有相同的名称和不同的值

考虑以下代码:

$('input[name="job[video_need]"]').on('change', function () {
    var value;
    if ($(this).val() == 'none') {
        value = 'hide';
    } else {
        value = 'show';
    }
    $('#video-script-collapse').collapse(value);
});

我有与您相同的用例,即在选择特定单选按钮时显示输入框。如果在取消选择时也触发了该事件,那么每次我将得到2个事件。

这里也有同样的问题,这很好:

$('input[name="someRadioGroup"]').change(function() {
    $('#r1edit:input').prop('disabled', !$("#r1").is(':checked'));
});

您当前的代码将只侦听id=r1单选按钮的更改如果选择了id=r2,是否应取消选择id=r1?单选按钮的取消选择未被此捕获?chk这可能有助于不使用removeAttr“disabled”,使用prop更改状态,请参见。此单选按钮有效,与其他标记为正确的按钮不同:S+1。安多马尔的解决方案奏效了,但这对我来说更有意义。使用类选择器可以防止在表单更改或具有动态字段数时必须更改函数。对necro的投票感到高兴!尽管现在两年后jQuery建议使用prop而不是attr。应该将.attr'checked'更改为.prop'checked'。糟糕的例子是,它不是这样做的。请参阅。JSFIDLE解决方案被设置为Mootools而不是jQuery,并阻止它运行。请尝试此解决方案以查看以下行为:。我添加了一个更改日志,您可以很容易地看到,在选中另一个单选按钮时,如果不选中选中选中的单选按钮,则不会触发更改事件。输入[name=someRadioGroup]语法错误。正确的语法是:input[name=someRadioGroup]:radio。另外值得注意的是,此方法仅适用于JQuery的1.7.2版。已为此提交错误。请参阅:如果您好奇的话,这个错误的例子。@Ray:这个错误只出现在有点的名字上。如果没有点,它可以正常工作,请参见示例,如果您更改为输入[name='DateSearchOptions.Test']名称并用单引号括起来,则可以使用点:如果$myCheckbox.attrchecked对我不起作用,则必须使用if$myCheckbox.is:checked。此示例的一个变体是$form input:radio.change。。。;并测试特定单选按钮状态“已检查”。这在ASP.NET中使用动态RadioButtonList时非常有用。这并不能回答最初的问题。这里没有使用jQuery,而是使用PHP来处理检查逻辑,而不是Javascript。
<div id='anID'>
 <form name="nameOfForm">
            <p><b>Your headline</b></p>
            <input type='radio' name='nameOfRadio' value='seed' 
             <?php if ($interviewStage == 'seed') {echo" checked ";}?> 
            onchange='funcInterviewStage()'><label>Your label</label><br>
 </form>
</div>
 function funcInterviewStage() {

                var dis = document.nameOfForm.nameOfRadio.value;

                //Auswahltafel anzeigen
                  if (dis == "") {
                      document.getElementById("anID").innerHTML = "";
                      return;
                  } else { 
                      if (window.XMLHttpRequest) {
                          // code for IE7+, Firefox, Chrome, Opera, Safari
                          xmlhttp = new XMLHttpRequest();
                      } else {
                          // code for IE6, IE5
                          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                      }
                      xmlhttp.onreadystatechange = function() {
                          if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                              document.getElementById("anID").innerHTML = xmlhttp.responseText;
                          }
                      }
                      xmlhttp.open("GET","/includes/[name].php?id="+dis,true);
                      xmlhttp.send();
                  }
              }  
//// Get Value
$id = mysqli_real_escape_string($db, $_GET['id']);

//// Insert to database
$insert = mysqli_query($db, "UPDATE [TABLE] SET [column] = '$id' WHERE [...]");

//// Show radio buttons again
$mysqliAbfrage = mysqli_query($db, "SELECT [column] FROM [Table] WHERE [...]");
                  while ($row = mysqli_fetch_object($mysqliAbfrage)) {
                    ...
                  }
                  echo" 
                  <form name='nameOfForm'>
                      <p><b>Your headline</b></p>
                      <input type='radio' name='nameOfRadio' value='seed'"; if ($interviewStage == 'seed') {echo" checked ";} echo" onchange='funcInterviewStage()'><label>Yourr Label</label><br>
                      <input type='radio' name='nameOfRadio' value='startup'"; if ($interviewStage == 'startup') {echo" checked ";} echo" onchange='funcInterviewStage()'><label>Your label</label><br>

                  </form> ";
$('input[name="job[video_need]"]').on('change', function () {
    var value;
    if ($(this).val() == 'none') {
        value = 'hide';
    } else {
        value = 'show';
    }
    $('#video-script-collapse').collapse(value);
});
$('input[name="someRadioGroup"]').change(function() {
    $('#r1edit:input').prop('disabled', !$("#r1").is(':checked'));
});