6

在从下拉列表中选择值时,如果所选值等于某个值,我希望下拉列表更改为只读,我该怎么做?

HTML:

<select id="s_id">
   <option value="volvo">Volvo</option>
   <option value="saab">Saab</option>
   <option value="opel">Opel</option>
   <option value="audi">Audi</option></select>

脚本:

$(document).ready(function () {
   $("#s_id").change(function () {
     var x = $(this).val();
     //alert("something's changed");
     alert($(this).val());
     if (x === opel) {
         alert("iff only.....");
         $(this).attr("readOnly", "true");
    }
   });
});

小提琴:http: //jsfiddle.net/L4reds/xKQUd/2/

4

8 回答 8

13

你需要比较x一个字符串,"opel"你可以使用属性disabled,在这里看小提琴:http: //jsfiddle.net/xKQUd/3/

澄清一下:select元素不能设置为readOnly,需要使用disabled属性

为了解决不发送到服务器的问题,设置一个隐藏输入等于禁用值,它将在表单提交时发送,在这里查看这个小提琴:http: //jsfiddle.net/xKQUd/25/

于 2013-07-26T12:16:46.340 回答
2

在您的代码中,您opel用作variable. 但它不是一个variable它是一个string。所以你需要把它当作一个字符串(单引号或双引号)。

$(document).ready(function () {
    $("#s_id").change(function () {
        var x = $(this).val();            
        alert($(this).val());
        alert("x=======" +x);
        if (x == "opel") {
            alert("iff");
            $(this).attr("disabled", "disabled");
        }
    });
});

试试这个jsfiddle

或取一个变量var opel = "opel";

试试 jsfiddle

于 2013-07-26T12:22:49.833 回答
1

Select元素不能设置readonly,但可以disabled代替。但在这种情况下,它们的值不会与form.

您在这里有两个选择。

一种是hidden input使用选定的值设置 a,然后禁用select

$(document).ready(function () {
   $("#s_id").on("change", function () {
       if ($(this).val() === "opel") {
           $("#myHiddenField").val($(this).val());
           $(this).attr("disabled", "disabled");
       }
   });
});

另一种是从 中删除所有其他选项select,只留下选定的选项:

$(document).ready(function () {
   $("#s_id").on("change", function () {
     if ($(this).val() === "opel") {
         $(this).children("option").each(function() {
            if (this.value != "opel")
               this.remove();
         });
     }
   });
});

现在由你决定。

于 2013-07-26T12:25:32.330 回答
1

Select没有 attr ReadOnly- 相反,它可以是disabled 您的代码:

$(document).ready(function () {
    $("#s_id").change(function () {
        var x = $(this).val();
        //alert("something's changed");
        alert($(this).val());
        alert("x=======" +x);
        if (x == "opel") {
            alert("iff");
           // $(this).attr("readOnly", "true");
            $(this).attr('disabled',true);
        }
    });
});

btwopen不是变量,而是值,所以需要用引号"opel" 和小提琴:http: //jsfiddle.net/xKQUd/5/

于 2013-07-26T12:18:29.403 回答
0

试试下面的代码:

<select id="s_id">
 <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
 <option value="opel">Opel</option>
 <option value="audi">Audi</option>
 </select>

jQuery代码:

$(document).ready(function () {
$("#s_id").change(function () {
 var x = $(this).val();    
 if (x == 'opel') {
     $(this).attr('disabled','disabled');
}
});
});

http://jsfiddle.net/Ea6NN/

于 2013-07-26T12:30:02.800 回答
0

你在这里http://jsfiddle.net/SteveRobertson/xKQUd/24/

      $(document).ready(function () {
          y=1;
          $("#s_id").change(function () {
             var x = $(this).val();
    //alert("something's changed");


             if (x == "opel" && x!=y) {           
                y=x;
                $("#s_id").prop("disabled", true).change();            
    }
});

});

于 2013-07-26T12:30:08.740 回答
0

尝试

if (x == 'opel') {
        alert("iff");
        $(this).attr("disabled", "true");
    }

小提琴演示

于 2013-07-26T12:19:12.437 回答
0

尝试这个,

if (x == "opel") {

            $(this).attr("disabled", "disabled");
        }
于 2013-07-26T12:21:18.173 回答