函数未按预期响应


Function is not responding as intended

我正试图从数据库中提取数据,这些数据将被动态添加到表单中。根据数据库中的数据值,我有一对单选按钮("是"answers"否"),它们将被不同地检查。

为了实现这一点,我有一个功能,它接受单选按钮的值作为参数,并根据选中"是"或"否"的位置来提醒消息。然而,目前该功能一直将单选按钮返回为未选中,即使它已经被选中,我也看不出有什么问题。

如果能得到任何帮助,我将不胜感激。

我的jQuery代码(摘录):

function checkRadio(radio){
    if(radio.checked)
        {
            alert("button is checked");//$(".BizEdititemDiscountDetails").hide();
        }
        else
        {
            alert("button is not checked");//$(".BizEdititemDiscountDetails").show();
        }
    };
    function radioCheck(){
        var state=$("#BizEditItemRadioNo").val();
        checkRadio(state);
    };
    <!--Loads item categories-->
    $('#BizEditItemCat').load('getitemcategory.php');
    <!--Loads item subcategories-->
    $('#BizEditItemCat').change(function(){
        var category=$('#BizEditItemCat').val();
        var encoded= encodeURIComponent(category);
        //window.location.href='getbusinesssubcategory.php?category='+encoded;
        $('#BizEditItemSubCat').load('getitemsubcategory.php?category='+encoded);
    });
    <!--Loads items-->
    $('#BizEditItemSubCat').change(function(){
        var category=$('#BizEditItemCat').val();
        var subcategory=$('#BizEditItemSubCat').val();
        $('#BizEditItemOld').load("getitems.php",{category:category,subcategory:subcategory});
    });
    <!--Loads item details-->
    $('#BizEditItemOld').change(function(){
        var category=$('#BizEditItemCat').val();
        var subcategory=$('#BizEditItemSubCat').val();
        var item=$('#BizEditItemOld').val();
        $('#ItemDetailsContainer').load("getitemdetails.php",{category:category,subcategory:subcategory,item:item},function(){
            radioCheck();
        });
    });

动态添加部分(摘录):

if($discount=="1")
{
        echo"<div class='BizEditItemDetails'>";
            echo"<label for='BizEditItemName'>Name:</label>";
            echo"<input class='BizEditItemInput' type='text' id='BizEditItemName' name='BizEditItemName' size='30' maxlength='50' value='"$name'">";
            echo"<span></span>";
        echo"</div>";
        echo"<div class='BizEditItemDetails'>";
            echo"<label for='BizEditItemPrice'>Price:</label>";
            echo"<input class='BizEditItemInput' type='number' id='BizEditItemPrice' name='BizEditItemPrice' step='any' min=0 value='"$price'">";
            echo"<span></span>";
        echo"</div>";
        echo"<div class='BizEditItemDetails'>";
            echo"<label>Discount:</label>";
                echo"<input type='radio' checked='checked' class='BizEditItemInput' value='Yes' id='BizEditItemRadioYes' name='BizEditItemDiscount'>Yes";
                echo"<input type='radio' class='BizEditItemInput' value='No'  id='BizEditItemRadioNo' name='BizEditItemDiscount' step='any'>No";
            echo"</span></span>";
        echo"</div>";

        echo"<div class='BizEditItemDetails'>";
            echo"<div class='BizEdititemDiscountDetails'>";
                echo"<label for='BizEditItemPercent'>Discount Percentage</label>";
                echo"<input class='BizEditItemInput' type='number' id='BizEditItemPercent' name='BizEditItemPercent' step='any' min=0 value='"$discountpercent'">%";
                echo"<span></span>";
            echo"</div>";
        echo"</div>";
        echo"<div class='BizEditItemDetails'>";
            echo"<div class='BizEdititemDiscountDetails'>";
                echo"<label for='BizEditItemDiscountPrice'>Discounted Price:</label>";
                echo"<input class='BizEditItemInput' type='number' id='BizEditItemDiscountPrice' name='BizEditItemDiscountPrice' step='any' min=0 value='"$discountprice'" readonly >";
                echo"<span></span>";
            echo"</div>";
        echo"</div>";
        echo"<div class='BizEditItemDetails'>";
                echo"<label for='BizEditItemQty'>Quantity:</label>";
                echo"<input class='BizEditItemInput' type='number' id='BizEditItemQty' name='BizEditItemQty' min=0 value='"$qty'">";
                echo"<span></span>";
        echo"</div>";

        echo"<div class='BizEditItemDetails'>";
            echo"<label for='BizEditItemDesc'>Desc:</label>";
            echo"<textarea class='BizEditItemInput' id='BizEditItemDesc' name='BizEditItemDesc' cols='30' rows='5'>$desc</textarea>";
            echo"<span></span>";
        echo"</div>";
        echo"<div class='BizEditItemDetails'>";
            echo"<input class='BizEditItemInput' style='margin-left:360px' type='submit' name='BizEditItemSubmit' value='Submit'>";
        echo"</div>";
}

从动态添加部分的摘录中可以看出,单选按钮已经通过checked="checked"进行了检查,但我不断收到警报("按钮未检查"),在我的服务器日志(localhost)或Chrome中的开发人员控制台中没有任何其他错误。

编辑:(jQuery代码的其余部分)

<!--Manages loaded item details-->  
$('#ItemDetailsContainer').on('change','#BizEditItemRadioNo',function(){
radioCheck(this);
<!--Shows the details when yes is clicked-->
$('#BizEditItemRadioYes').click(function(){
    $('.BizEdititemDiscountDetails').show();
});
<!--Hides the details when no is clicked-->
$('#BizEditItemRadioNo').click(function(){
    $('.BizEdititemDiscountDetails').hide();
});
<!--calculates the discounted price when discount is checked yes-->
$('#BizEditItemRadioYes').change(function(){
    if($(this).val() == 'Yes'){
    <!--calculates discount price when discount percentage changes-->
    $('#BizEditItemPercent').change(function(){
        var percent=$('#BizEditItemPercent').val();
        var price=$('#BizEditItemPrice').val();
        var discountpercent=percent / 100;
        var discountprice=price * discountpercent;
        $('#BizEditItemDiscountPrice').val(price - discountprice);
    });
    <!--calculates discount price when discount price changes-->
    $('#BizEditItemPrice').change(function(){
        var percent=$('#BizEditItemPercent').val();
        var price=$('#BizEditItemPrice').val();
        var discountpercent=percent / 100;
        var discountprice=price * discountpercent;
        $('#BizEditItemDiscountPrice').val(price - discountprice);
    });
   }
});
$('#BizEditItem').validate({
    errorElement:"span",
    errorPlacement:function(error,element){
        $(error).insertAfter(element);
    },
    rules:{
        BizEditItemCat:{
            required:true
        },
        BizEditItemSubCat:{
            required:true
        },
        BizEditItemOld:{
            required:true
        },
        BizEditItemName:{
            required:true,
            minlength:5
        },
        BizEditItemPrice:{
            required:true,
            min:0
        },
        BizEditItemDiscount:{
            required:true
        },
        BizEditItemPercent:{
            required:true
        },
        BizEditItemDiscountPrice:{
            required:true
        },
        BizEditItemQty:{
            required:true,
            min:0
        },
        BizEditItemDesc:{
            required:true,
            minlength:20
        },
    messages:{
        BizEditItemCat:{
            required:"Please select an item category."
        },
        BizEditItemSubCat:{
            required:"Please select an item subcategory."
        },
        BizEditItemOld:{
            required:"Please select an item."
        },
        BizEditItemName:{
            required:"Please enter an item name.",
            minlength:"Please enter at least 5 characters."
        },
        BizEditItemPrice:{
            required:"Please enter an item price.",
            min:"Please enter a value greater than 0."
        },
        BizEditItemDiscount:{
            required:"Please enter a value."
        },
        BizEditItemPercent:{
            required:"Please enter a value."
        },
        BizEditItemDiscountPrice:{
            required:"Please enter a value."
        },
        BizEditItemQty:{
            required:"Please enter the number of items you have in stock.",
            min:"Please enter a value greater than 0."
        },
        BizEditItemDesc:{
            required:"Please enter an item description.",
            minlength:"Please enter at least 20 characters."
        },
    },
    },
    submitHandler:function(form){
    form.submit();
    }
});
});

.val()返回输入元素的当前值。例如

<input type="radio" name="foo" value="bar" id="baz" />
var x = $('#baz').val(); // returns 'bar'

然后你做类似的操作

checkRadio('bar');
if ('bar'.checked) { ... }

字符串没有".checked"属性。您需要绕过表示单选按钮本身的节点,例如

checkRadio($('#baz'));