2013-07-26 3 views
5

bei der Auswahl von Werten aus der Dropdown-Liste, wenn die ausgewählten Werte zu einem bestimmten Wert, ich möchte das Dropdown zu readonly ändern, wie kann ich das tun?Javascript zum Setzen des Attributs readonly auf Drop-Down-Wert ändern

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> 

Script:

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

Fiddle: http://jsfiddle.net/L4reds/xKQUd/2/

+2

Zuerst müssen Sie Zitate um die Wertbedingung hinzufügen: 'if (x ===" opel ") ...'. Zweitens, und noch wichtiger, können "select" -Elemente nicht "readonly" gemacht werden. Sie können "deaktiviert" werden, aber ihr Wert würde dann nicht mit den Formulardaten gesendet werden. –

+1

Mit "nur lesen" meinen Sie, dass der Wert nicht ausgewählt werden kann? –

+0

Ihre Zeile 'if (x == opel) {', Variable 'opel' ist _undefiniert_. Sie wollten wahrscheinlich mit _String_ vergleichen; 'if (x == 'opel') {' –

Antwort

10

Sie müssen x zu einer Reihe von "opel" vergleichen und das Attribut disabled verwenden können, finden Geige hier : http://jsfiddle.net/xKQUd/3/

Zur Klarstellung: select Elemente können nicht auf readOnly eingestellt werden, muß das disabled Attribut verwenden

um die auf den Server Problem nicht zu senden, um zu bekommen, einen versteckten Eingang gleich Behinderte Wert gesetzt, der auf Formular-Vorlage gesendet werden soll stattdessen diese Geige sehen hier: http://jsfiddle.net/xKQUd/25/

+2

Es gibt jedoch das größere Problem, dass ein 'select' Element nicht' readonly' gemacht werden kann. –

+0

Daher, warum ich sagte, das deaktivierte Attribut zu verwenden – verbanicm

+2

Aber das bedeutet, dass der ausgewählte Wert wird nie an den Server gesendet werden, die entgegengesetzt sein kann, was das OP erfordert. "behindert" ist keine praktikable Alternative. –

1

Select hat nicht ReadOnly attr - stattdessen kann es disabled so Ihr Code sein:

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

btw ist open keine Variable, sondern Wert muss so in Anführungszeichen "opel" und Geige sein: http://jsfiddle.net/xKQUd/5/

0

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

FIDDLE Demo

0

Versuchen Sie, diese versuchen,

if (x == "opel") { 

      $(this).attr("disabled", "disabled"); 
     } 
2

In Ihrem Code haben Sie opel als variable verwendet. aber es ist kein variable es ist ein string. Sie müssen also eine Zeichenfolge (in einfachen oder doppelten Anführungszeichen) verwenden.

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

Try this jsfiddle

oder eine Variable var opel = "opel"; nehmen.

Try jsfiddle

1

Select Elemente können nicht readonly eingestellt werden, kann aber disabled stattdessen sein. Aber in diesem Fall wird ihr Wert nicht mit der form übermittelt.

Sie haben hier zwei Möglichkeiten.

One ist ein hidden input mit dem ausgewählten Wert einzustellen, und deaktivieren Sie die select:

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

Der andere, ist es, alle anderen Optionen aus dem select zu entfernen, so dass nur die ausgewählten zur Verfügung:

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

Jetzt liegt es an Ihnen.

0

Try Below-Code:

<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-Code:

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

http://jsfiddle.net/Ea6NN/

0

Sie sind hier 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();    
    } 
}); 

});

Verwandte Themen