setAttribute不能正常工作。

时间:2013-08-09 06:05:26

标签: javascript html

查看以下代码

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/

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

然而,它没有按预期工作。我做错了什么?

3 个答案:

答案 0 :(得分:2)

尝试设置已禁用的属性

document.getElementById(id).disabled = true; //false

答案 1 :(得分:2)

document.getElementById(id).disabled=true;

答案 2 :(得分:1)

我没有看到你在jsFiddle的任何地方调用hide(id),也许你没有发布完整的代码。 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 Demo