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 invalidID should be unique1ページの要素に。

于 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ツリーを1回だけ上に移動するため、フォーム要素がselect要素の直接の親である場合にのみコードが機能します。この場合はそうではありません。代わりに.parents()を使用してください。

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

また、最初の選択は<td>内にないことに注意してください

編集:.parent()を使用した他の提案は、無効なHTML(テーブルのないtr、開いていないtdなど)を利用しているようですが、適切なhtmlでは機能せず、行と列を削除して他の要素または適切な有効なテーブルを作成します(フォームごとに1つのテーブル)

于 2013-02-28T10:08:22.317 に答える
0

2番目のコードは機能していますが、無効な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 に答える