0

看看下面的代码

function show(id){
if (document.getElementById(id).style.display == 'none')
  {
    document.getElementById(id).style.display = '';
    document.getElementById(id).removeAttribute("disabled");
  }
}

function hide(id){
   document.getElementById(id).style.display = 'none';
   document.getElementById(id).setAttribute("disabled","disabled");
} 

http://jsfiddle.net/3jD3W/

当我隐藏元素时,我还想禁用它,以便提交的值仅适用于现在可见的元素。

但是它没有按预期工作。我做错了什么?

4

3 回答 3

2

尝试设置 disabled 属性

document.getElementById(id).disabled = true; //false
于 2013-08-09T06:08:23.187 回答
2
document.getElementById(id).disabled=true;
于 2013-08-09T06:08:25.280 回答
1

我没有看到你hide(id)在 jsFiddle 中的任何地方调用,也许你没有发布完整的代码。Element.setAttribute('disabled', true)两者Element.disabled = true都有效。由于您使用的是 jQuery,因此请prop改用。

$('#desire').change(function() {
    var id = $(this).val(); //returns Share if Share is selected
    var $select = $('#' + id);
    var $actions = $('select[name=action]');
    $actions.hide(); //hide all actions but the selected one
    $select.show().prop('disabled', false); //enable this select
    $('select[name=action]').not($select).prop('disabled', true); //disable all other actions
});

$('input#submit').click(function() {
    $('select[name=action]:hidden').prop('disabled', true); //required in case the form is submitted directly
    alert($('form').serialize()); //only added for testing
    return false; //test
});

jsFiddle 演示

于 2013-08-09T06:35:01.650 回答