1

action="/uri/"ユーザーが送信ボタンをクリックしたときに親フォームから取得する必要があるという問題を解決しようとしています。私が使用する$(form).live('submit')と、半分の時間しか機能しません。だから私は$('input[type=""]').live('click')代わりに使用しています。ただし、以下のコードでわかるように、アクション属性を取得しようとしていますが、それが認識されないか、取得できないようです.attr('action')

<script>
var get_pages_load_options = { 
    target:        '#content',
    beforeSubmit:  showRequest,
    success:       showResponse
};
$('input[type="submit"]').live('click',function(event){
    var url = $(this).closest("form").attr('action');
    var named = $(this).closest("form").attr('id')
    console.debug(url+"/"+named);
    $("#"+named).ajaxForm(get_pages_load_options);
    $.ajax({
        type: "POST",
        url: url,
        data: {ajaxtype: "side"},
        success: function(data) {
            $("#sidebar_menu").html(data);
        }
    });
    event.preventDefault();
    return false;
});
</script>

私が使用しようとしている html は次のようになります (読みやすくするために PHP を削除しました)。

<tr>
    <td class="bold" colspan="2">
        <form id='defcon_form' name='defcon_form' action='/cityhall/' method='post'>
            <div class="left">
                Realm Hoarding 
                <select name='defcon_rate'>
                    <option value='0'>None</option>
                    <option value='10'>Low</option>
                    <option value='20'>Medium</option>
                    <option value='30'>High</option>
                    <option value='50'>Critical</option>
                </select><br />
                <font size='-4'>(Stashes Gold/Turn, Decreases Defense)</font>
            </div><div class="right">
                <input type='submit' name='defcon' value='Update Hoarding!' />
            </div>
        </form>
    </td>
</tr>

HTML が最適ではないことはわかっているので、戻って少し修正する必要があります。

4

3 に答える 3

1

HTML が無効です。要素にはand要素<tr></tr>のみを含めることができます。無効な html を使用すると、ブラウザ間で一貫性のない結果が得られるか、どのブラウザでもまったく機能しない可能性があります。<td></td><th></th>

https://developer.mozilla.org/en/HTML/Element/tr

各 tr ではなくテーブル全体をフォームで囲み、各 tr にデータ キーを指定して、指定された tr の ID を含めます。これにより、フォームに到達する送信をキャッチし、 を使用して現在の行の ID を取得し、$(this).closest('tr').data("key")上記の tr 内の入力から値を投稿できます。

于 2012-06-05T15:41:39.827 に答える
0

これを試して

<script>
$('input[type="submit"]').click(function(event){
    event.preventDefault();
    var url = $(this).parents("form").attr('action');
    console.debug(url);
    $(this).ajaxForm(get_pages_load_options);
    $.ajax({
        type: "POST",
        url: url,
        data: {ajaxtype: "side"},
        success: function(data) {
            $("#sidebar_menu").html(data);
        }
    });
    return false;
});
</script>
于 2012-06-05T15:37:38.083 に答える
0

.closest次のように使用する代わり.parentに:

var url = $(this).parent().attr('action');
于 2012-06-05T15:28:43.237 に答える