3

我正在使用以下 jquery 来禁用我页面上的文本框。我遇到的问题是,默认情况下,因为它存储在数据库中,它会加载“remote_server”设置为 0 的页面。即使自动设置,字段仍然可以修改。我必须单击选择下拉菜单并重新选择“否”才能正常工作。

这是我的 JS

var e = document.getElementsByName("remote_server")[0]
var strUser = e.options[e.selectedIndex].value;

if ( strUser == 0 ) {

$('select[name=remote_server]').change(function(){
var inputs = $('input[name^=ftp_],select[name^=ftp_]');
$(this).val() == "0" ? inputs.attr("disabled", "disabled") : inputs.removeAttr("disabled");
});
}

我用于下拉选择的 remote_server HTML 代码。

<select name="remote_server" class="required">
<option></option>
<option value="1" <?php if($remote=="1") echo 'selected="selected"'; ?>>Yes</option>
<option value="0" <?php if($remote=="0") echo 'selected="selected"'; ?>>No</option>
</select>

加载页面我看到选项 0 也被选中,这就是为什么这让我感到困惑

<select name="remote_server" class="required">
<option></option>
<option value="1" >Yes</option>
<option value="0" selected="selected">No</option>
</select>
4

1 回答 1

0

您应该触发change事件:

$('select[name=remote_server]').change(function(){
   var inputs = $('input[name^=ftp_],select[name^=ftp_]');
   $(this).val() == "0" 
   ? inputs.attr("disabled", "disabled") 
   : inputs.removeAttr("disabled");
}).change() // trigger the event

请注意,从 jQuery 1.6 开始,用于设置/获取元素的属性,prop应该使用方法而不是attr

var $inputs = $('input[name^=ftp_],select[name^=ftp_]');

$('select[name=remote_server]').change(function(){
     $inputs.prop('disabled', this.value === 0)
}).change();
于 2012-12-22T21:24:53.753 回答