$(document).ready(function() {
//Check City Value
var city_value = parseInt($("#city").val());
if( city_value == 0) {
$("#state").attr("readonly", true);
//$("#rate").attr("readonly", "readonly");
} else {
$("#state").removeAttr("readonly");
//document.getElementById("state").removeAttribute("readonly",0);
//get_states(city_value);
}
/***
//Check State Value
var state_value = parseInt($('#state').val());
if( state_value == 0) {
$('#rate').attr('readonly', true);
} else {
$('#rate').attr('readonly', false);
}
***/
});
这是我的示例代码。
<td><select name="city" id="city">
<option value="0">PLEASE_SELECT_TEXT</option>
<option value="Antalya">Antalya</option>
<option value="Bodrum">Bodrum</option>
<option value="Istanbul">Istanbul</option>
</select> </td>
<td><div id="states"><input type="text" name="state" value="FORCE_FOR_SELECT" readOnly id="state"></div></td>
我还添加了doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
答案 0 :(得分:31)
是的,最后我找到了解决方案。我用过onChange函数。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
//$(document).ready(function() {
function check_city(city_value) {
//Check City Value
city_value = $("#city").val();
if( city_value == "0") {
$("#state").attr("readonly", true);
//$("#rate").attr("readonly", "readonly");
} else {
$("#state").attr("readonly", false);
//$("#state").removeAttr("readonly");
//document.getElementById("state").removeAttribute("readonly",0);
//get_states(city_value);
}
/***
//Check State Value
var state_value = parseInt($('#state').val());
if( state_value == 0) {
$('#rate').attr('readonly', true);
} else {
$('#rate').attr('readonly', false);
}
***/
//});
}
</script>
<td><select name="city" id="city" onChange="check_city(this.value)">
<option selected value="0">PLEASE_SELECT_TEXT</option>
<option value="Antalya">Antalya</option>
<option value="Bodrum">Bodrum</option>
<option value="Istanbul">Istanbul</option>
</select> </td>
<td><div id="states"><input type="text" name="state" value="FORCE_FOR_SELECT" readonly id="state"></div></td>
答案 1 :(得分:5)
在我拥有的所有主流浏览器中都可以正常使用。这是一个SSCCE:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2496443</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$('#toggle').click(function() {
$('#foo').attr('readonly', !$('#foo').attr('readonly'));
});
});
</script>
<style>
input[readonly] {
background: lightgray;
}
</style>
</head>
<body>
<input id="foo">
<button id="toggle">toggle readonly</button>
</body>
</html>
切换它会将背景变为灰色(虽然并非所有浏览器都这样做)并且输入是不可编辑的(这在所有webbrowsers中都是一致的)。所以你的问题就在别的地方。你可能正在使用一个可怜的doctype,也可能与一个糟糕的网页浏览器结合使用。
答案 2 :(得分:4)
虽然readonly
属性采用布尔值,但readonly
属性采用字符串值。您应该使用已注释掉的代码:
$("#rate").attr("readonly", "readonly");
答案 3 :(得分:1)
您可以在没有Vanilla JS的纯JS(或jQuery)中执行此操作:
设置属性readOnly
:
document.getElementById("state").readOnly = true;
并取消设置:
document.getElementById("state").readOnly = false;