Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
第一次单击时的jQuery单选按钮值返回未定义的值,直到选择更改为止_Jquery_Forms_Radio - Fatal编程技术网

第一次单击时的jQuery单选按钮值返回未定义的值,直到选择更改为止

第一次单击时的jQuery单选按钮值返回未定义的值,直到选择更改为止,jquery,forms,radio,Jquery,Forms,Radio,我需要一些关于这个代码的帮助 我制作了一把小提琴来展示这个问题- 我试图读取两个无线组的值,然后通过GET请求(Ajax)发送它们的值 该代码有效,但在第一次收音机单击时除外,在更改收音机之前,收音机的值返回为未定义。这两种情况都会发生 代码如下: function jsdatabaseMatch() { $(document).ready(function(){ $(".form1").change(function () {window.vala = $('.fo

我需要一些关于这个代码的帮助

我制作了一把小提琴来展示这个问题-

我试图读取两个无线组的值,然后通过GET请求(Ajax)发送它们的值

该代码有效,但在第一次收音机单击时除外,在更改收音机之前,收音机的值返回为未定义。这两种情况都会发生

代码如下:

function jsdatabaseMatch()
{
     $(document).ready(function(){
         $(".form1").change(function () {window.vala = $('.form1:checked').val(); //Radio group 1
         $(".form2").change(function () {window.valb = $('.form2:checked').val(); //Radio group 2
            });
           });
         });
     alert(window.vala); //Radio 1 contains..
     alert(window.valb); //Radio 2 contains..

     var getr = window.vala + "&pricerange=" + window.valb; //GET request
         if (window.XMLHttpRequest)
         {
             xmlhttp=new XMLHttpRequest();
         }
         else
         {
             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.open("GET","showcase.php?yes="+getr,false); //Prepare GET Request
         xmlhttp.send();
         document.getElementById("pricecompare").innerHTML=xmlhttp.responseText;
}
我已尝试用
替换
。更改
。单击
,结果相同

提前谢谢

由tymeJV解决

  • 从执行
    jsdatabaseMatch
    的HTML中删除了
    onclick
    触发器
  • 在jQuery on radio中执行函数jsdatabaseMatch()
。更改事件 这是:

$(document).ready(function(){
    $(".form1").change(function () {window.vala = this.value;}); //Radio group 1
    $(".form1").change(jsdatabaseMatch); //Radio group 1
    $(".form2").change(function () {window.valb = this.value;}); //Radio group 2
    $(".form2").change(jsdatabaseMatch); //Radio group 2
    });

function jsdatabaseMatch()
{
    alert(window.vala);
    alert(window.valb);
    var getr = window.vala + "&pricerange=" + window.valb; //GET request
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET","showcase.php?yes="+getr,false); //Prepare GET Request
    xmlhttp.send();
    document.getElementById("pricecompare").innerHTML=xmlhttp.responseText;
}

完成更改事件后,您需要关闭它们。另外,使用
选择器指定值

$(".form1").change(function() {
    window.vala = this.value; //Radio group
}); // <---You can always add .change() right here to fire the event on DOM ready.

$(".form2").change(function () {
    window.valb = this.value; //Radio group 2
});
$(“.form1”).change(函数(){
window.vala=this.value;//无线电组

}); // 为什么
.form1:已选中
?如果元素没有被选中,那么您将被取消定义,因为选择器不存在。谢谢,修改了代码。它工作得更好,也就是说,现在只有可以在任一组中的初始单击返回未定义。但仍然不正确。因此,当您第一次单击单选按钮时,它会发出未定义的警报?您可以修改相关的HTML吗?是的,没问题,稍后返回。请参阅更新:--您不需要onClick处理程序。我简化了很多,看看,让我知道你的想法。