0

我可以对这段代码使用一些帮助。

我创建了一个小提琴来显示这个问题 - http://jsfiddle.net/r4hqC/

我正在尝试读取 2 个无线电组的值,然后通过 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;
}

我试过用结果替换它.change.click一样的。

提前致谢。

由 tymeJV 解决

  • onclick从 HTML 中删除了执行jsdatabaseMatch.
  • function jsdatabaseMatch()在 jQuery on radio.change事件中执行。

这里是:

$(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;
}
4

1 回答 1

0

您需要在更改事件完成后关闭它们。此外,使用选择器分配值this

$(".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
});
于 2013-05-01T14:47:21.507 回答