0

当用户选择一个选项时,我需要启用提交按钮,这是一个动态数据。我的 HTML:

<form method="post" action="xxx" id="member">
    <tr>
        <td>1</td>
        <select name="status">
            <option value="a">aktif</option>
            <option value="l">terkunci</option>
            <option value="b" selected="b">blokir</option>
        </select>
        </td>
        <input type="hidden" name="update_buyer" value="TRUE" />
        <input type="hidden" name="id" value="1" />
        <td>
            <button role="button" data-toggle="modal" data-target="#modal" class="btn btn-danger delete">Delete</button>&nbsp;
            <input type="submit" class="btn btn-primary save" disabled="disabled" value="Save">
        </td>
    </tr>
    </form>
        <form method="post" action="xxx" id="member">
    <tr>
        <td>2</td> 
        <td>
        <select name="status">
            <option value="a" selected="a">aktif</option>
            <option value="l">terkunci</option>
            <option value="b">blokir</option>
        </select>
        </td>
        <input type="hidden" name="update_buyer" value="TRUE" />
        <input type="hidden" name="id" value="2" />
        <td>
            <button role="button" data-toggle="modal" data-target="#modal" class="btn btn-danger delete" data-email="tess@email.com">Delete</button>&nbsp;
            <input type="submit" class="btn btn-primary save" disabled="disabled" value="Save">
        </td>
    </tr>
    </form>

我试试

$('select').change(function(){
$('.save').removeAttr('disabled');
}

但它启用所有提交按钮,我只想启用哪个用户点击,而不是所有提交按钮。

也许喜欢

$('select').change(function(){
$(this).parent('form').find('.save').removeAttr('disabled');
}

但它不起作用:(我该怎么做?帮助......

4

7 回答 7

2

使用.prop()

$('select').change(function(){
  $(this).parent().siblings().find('.save').prop('disabled', false);
});

笔记:

你有same id for both forms这可能会导致问题并its invalid使用这种方式。ID should be unique到单个页面上的元素。

于 2013-02-28T10:06:37.477 回答
1

试试这个 -

$(document).ready(function(){
  $('select').change(function(){
       $('.save').removeAttr('disabled');        
  });
});
于 2013-02-28T10:11:05.117 回答
0

试试这个

$('select').change(function(){
 $('.save').prop("disabled", false);
}

希望这可以帮助

于 2013-02-28T10:07:02.717 回答
0

.parent 方法只会在 DOM 树上向上爬一次,因此只有当表单元素是 select 元素的直接父级时,代码才会起作用,在这种情况下它不是。使用 .parents() 代替。

$('select').change(function(){
  $(this).parents('form').find('.save').removeAttr('disabled');
}

另外,请注意,您的第一个选择不在 <td> 内

编辑:其他使用 .parent() 似乎有效的建议恰好利用了您的无效 HTML(没有表格的 tr,未打开的 td 等),它们不适用于正确的 html,要么删除行和列并使用其他元素或建立适当的有效表格(每个表格一个表格)

于 2013-02-28T10:08:22.317 回答
0

你的第二个代码正在工作,但是你有无效的 HTML 标签..检查出来..

是使用您的代码的工作小提琴。

$('select').change(function(){
  $(this).parent('form').find('.save').removeAttr('disabled');
});
-^----here

注意:我可以看到您在更改功能末尾缺少括号...(不确定是否是错字)

于 2013-02-28T10:08:44.797 回答
0

JSFiddle在这里

$('select').change(function(){
   $(this).parent().children('.save').prop('disabled', false);
});
于 2013-02-28T10:09:05.527 回答
0

为您的每个表单提供不同的 ID 名称。它们都是 id="member",它们必须是唯一的。不确定这是你的错误。

即使使用相同的 ID,这也对我有用。

$('#member select[name=status]').change(function(){
    $('#member input[type="submit"]').removeAttr('disabled');
 })
于 2013-02-28T10:11:51.380 回答