选择一个选项时,jquery启用提交按钮

时间:2013-02-28 10:00:00

标签: jquery jquery-selectors

我需要在用户选择一个选项时启用提交按钮,这是一个动态数据。 我的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');
}

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

7 个答案:

答案 0 :(得分:2)

使用.prop()

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

注意:

您有same id for both forms这可能导致问题,its invalid可以使用这种方式。单页ID should be unique到元素。

答案 1 :(得分:1)

尝试这个 -

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

答案 2 :(得分:0)

试试这个

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

希望这有帮助

答案 3 :(得分:0)

.parent方法只在DOM树上运行一次,因此只有表单元素是select元素的中间父元素时才能使用代码,在这种情况下它不是。请改用.parents()。

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

另请注意,您的第一个选择不在&lt; td&gt;

编辑:使用.parent()的其他建议似乎正在利用您的无效HTML(tr没有表,未打开的td等),它们无法使用正确的html,删除行和列并使用其他元素或构建适当的有效表(每个表单一个表)

答案 4 :(得分:0)

您的第二个代码正在运行,但是您的HTML标签无效..请将其删除..

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

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

注意:我可以看到你在更改功能结束时缺少括号...(不确定是否是拼写错误)

答案 5 :(得分:0)

JSFiddle here

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

答案 6 :(得分:0)

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

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

$('#member select[name=status]').change(function(){
    $('#member input[type="submit"]').removeAttr('disabled');
 })