遇到Javascript问题

时间:2011-09-29 23:51:36

标签: php javascript jquery ajax

这是我的代码:JS PART

$(document).ready(function(){
    $("#parent").hide();
    $(".parentcheck").click(function(){
            if($(this).val()==="1") 
            {
                $("#parent").show();
                $('#switch').attr('disabled', '');

            }
            else {
                $("#parent").hide();
                $('#switch').attr('disabled', 'disabled');
            }
    });

    $("#switch").change(function () {
    var selectedSwitch = $("#switch").val();
    var parentcheck = $(".parentcheck:checked").val();
    if (selectedSwitch!='' && selectedSwitch!='0'){
    $.ajax({
    type: "POST",
    url : "optionsgenerator.php",
    data: {menu: selectedSwitch},
    success: function(result, status, xResponse){
        if (result!=''){
            if($('#parentcheck').attr('checked')){
                $("#parent").hide();
            }
            else {
                $("#parent").html(result);
                $("#parent").show();
            }
        }
        else{
            alert('Error occured.');
            $("#parent").hide();
        }
    },
    error: function(e){
        alert(e);
    }
    });
    }
    else
    $("#parent").hide();
});

});

和HTML标记

<select name="switch" id="switch">
<option value="" selected="selected">Select one...</option>
<option value="1">a</option>
<option value="2">b</option>
<option value="0">no one</option>
</select>

<div class="parent">
<input type="radio" class="parentcheck" name="parentcheck" value="0"/>
<input type="radio" class="parentcheck" name="parentcheck" value="1"/>

<select name="parent" id="parent"></select>
</div>

问题是

如果类"parentcheck"的单选按钮的值 1 ,我的js显示selectbox而不检查是否有要显示的内容(在我的情况下,从后端php代码返回的选项)或不

我正在努力实现以下

如果类"parentcheck"的单选按钮的值 1 ,则show selectbox #parent 仅在ajax已返回的情况下启用 selectbox #switch

2 个答案:

答案 0 :(得分:2)

您正在尝试通过id获取parentcheck,但是parentcheck是一个类:

var parentcheck = $("#parentcheck:checked").val();

尝试将其更改为

var parentcheck = $(".parentcheck:checked").val();

编辑: 对于取消选择:

       if($(this).val()==="1") 
        {
            if ($("#parent option").length > 0) {
                 $("#parent").show();
            }
            $('#switch').attr('disabled', '');

        }
        else {
            $("#parent").hide().find('option:selected').removeAttr('selected');
            $('#switch').attr('disabled', 'disabled').find('option:selected').removeAttr('selected');
        }

答案 1 :(得分:1)

解决方案:

1)

 if(selectedSwitch != '' && selectedSwitch !=0)
  • 你正在缩短你的OR声明,需要成为一个AND。

2)

$(".parentcheck").click(function(){
        if($(this).val() == "1") 
        {
            $('#parent).show();
            $('#switch').attr('disabled', '');

        }
        else {
            $('#parent').val('');
            $('#parent').hide();
            $('#switch').val("Select one...");
            $('#switch').attr('disabled', 'disabled');
        }
});
  • 要设置select的值,您需要为其指定所需索引的实际值。

3)在AJAX函数中设置一个布尔标志,然后在点击监听器中只启用selectbox if(flag)。