使用jQuery禁用/启用动态输入/ textarea / select字段

时间:2013-03-22 16:16:55

标签: jquery if-statement input add

我在选择框中有以下代码和三个选项,它们应该在输入字段/ textarea / select中动态启用/禁用属性“disable”,但代码根本不起作用:

 $(document).ready(function() {
$('.fieldcontent').not('.info').hide();
$('#selector_cs').change(function() {

      $('.fieldcontent').customFadeOut(100);
      $('.' + $(this).val()).customFadeIn(900);
     // $('input').prop('disabled',false);
    //$('textarea').prop('disabled',false);
    //$('select').prop('disabled',false);
 //option1
 if ($("this:selected").val() === 'help') {
$("textarea[name='message']").prop('disabled',false);
$("input[name='domain']").prop('disabled',false);
}else{
    $("textarea[name='message']").prop('disabled',true);
$("input[name='domain']").prop('disabled',true);
    };
    //option2
     if ($("this:selected").val() === 'info') {
$("textarea[name='message']").prop('disabled',false);

}else{
    $("textarea[name='message']").prop('disabled',true);
};
     //option3
     if ($("this:selected").val() === 'products') {
$("textarea[name='message']").prop('disabled',true);
$("select[name='products']").prop('disabled',false);
$("input[name='domain']").prop('disabled',false);
$("input[name='address']").prop('disabled',false);
$("input[name='state']").prop('disabled',false);
$("input[name='city']").prop('disabled',false);
$("input[name='country']").prop('disabled',false);
};      
});  });

有人可以帮我正确编写代码吗?

提前感谢您提供任何帮助

编辑:感谢@Ken和@arun的快速帮助。现在jQuery正在运行。

但是:我有一个PHP验证,它没有通过jQuery禁用的fiedls传递。为什么呢?

否则,我不想通过jquery添加/删除动态隐藏字段,因为当用户收到邮件时,他会看到隐藏字段值,这些值不是“真实”值,而是具有“ some1“,”some2“ecc。

如何避免这种情况并使用diasabled字段代替传递php验证?

2 个答案:

答案 0 :(得分:2)

您的选择器$("this:selected").val()错误,应该$(this).val()获取所选值

$(document).ready(function() {
    $('.fieldcontent').not('.info').hide();
    $('#selector_cs').change(function() {

        $('.fieldcontent').customFadeOut(100);
        $('.' + $(this).val()).customFadeIn(900);
        // $('input').prop('disabled',false);
        //$('textarea').prop('disabled',false);
        //$('select').prop('disabled',false);
        //option1
        if ($(this).val() === 'help') {
            $("textarea[name='message']").prop('disabled',false);
            $("input[name='domain']").prop('disabled',false);
        }else{
            $("textarea[name='message']").prop('disabled',true);
            $("input[name='domain']").prop('disabled',true);
        };
        //option2
        if ($(this).val() === 'info') {
            $("textarea[name='message']").prop('disabled',false);

        }else{
            $("textarea[name='message']").prop('disabled',true);
        };
        //option3
        if ($(this).val() === 'products') {
            $("textarea[name='message']").prop('disabled',true);
            $("select[name='products']").prop('disabled',false);
            $("input[name='domain']").prop('disabled',false);
            $("input[name='address']").prop('disabled',false);
            $("input[name='state']").prop('disabled',false);
            $("input[name='city']").prop('disabled',false);
            $("input[name='country']").prop('disabled',false);
        };      
    }); 
});

演示:Fiddle

答案 1 :(得分:1)

将$(“this:selected”)。value()更改为$(this).value()应解决您的问题

$(document).ready(function () {
    $('.fieldcontent').not('.info').hide();

    $('#selector_cs').change(function () {
        $('.fieldcontent').customFadeOut(100);
        $('.' + $(this).val()).customFadeIn(900);

        // $('input').prop('disabled',false);
        //$('textarea').prop('disabled',false);
        //$('select').prop('disabled',false);
        //option1

        if ($(this).val() === 'help') {
            $("textarea[name='message']").prop('disabled', false);
            $("input[name='domain']").prop('disabled', false);
        } else {
            $("textarea[name='message']").prop('disabled', true);
            $("input[name='domain']").prop('disabled', true);
        }

        //option2
        if ($(this).val() === 'info') {
            $("textarea[name='message']").prop('disabled', false);

        } else {
            $("textarea[name='message']").prop('disabled', true);
        }

        //option3
        if ($(this).val() === 'products') {
            $("textarea[name='message']").prop('disabled', true);
            $("select[name='products']").prop('disabled', false);
            $("input[name='domain']").prop('disabled', false);
            $("input[name='address']").prop('disabled', false);
            $("input[name='state']").prop('disabled', false);
            $("input[name='city']").prop('disabled', false);
            $("input[name='country']").prop('disabled', false);
        }
    });
});