4

jqueryを使用してAJAXでフォームを送信しようとしています:

<form name="myform" action="">
<table id="webcam-table">
    <thead>
        <tr>
            <th>Name</th>
            <th>...</th>
            <th><input type="checkbox" name="checkboxselectall" title="Select All" />&nbsp;&nbsp;
                <button type="submit" class="deletebutton" name="delete_video" title="Delete the selected videos">Delete</button></th>
        </tr>
    </thead>
    <tbody>
        <tr >
            <td>some data</td>
            ...
            <td><input type="checkbox" value="<?php echo $this->result_videos[$i]["video_name"]; ?>" title="Mark this video for deletion"/></td>
        </tr>
    </tbody>
</table>
</form>

誰かがチェックボックスを選択して送信ボタンを押すと、次のコードが表示されます。

jQuery(".deletebutton").on("click", function() {
    var testchecked = jQuery(':checkbox:checked').length;
    if (testchecked == 0) {
        alert('Please select at least one video');
        e.preventDefault();
    }
    else
    {
        if (confirm("Are you sure you want to delete the selected videos?"))
        {
            var checked = jQuery('input:checkbox:checked').map(function () {
                return this.value;
            }).get();
            var $this = jQuery(this);
            jQuery.ajax({
                type: 'POST',
                url: 'index.php?option=com_recordings&task=deletevideos&format=raw',
                data: {checkedarray:checked},
                success: function(data){
                    alert(data);

                }
            });
        }
    }
});

奇妙なことに、このコードはIEでは正常に機能しますが(変更の場合はどうですか)、ChromeやFFでは機能しません。エラーを確認した場合:

error: function(jqXHR, textStatus, errorThrown) {
        if (jqXHR.status === 0) {
            alert("Not connected. Verify Network.");
        }

常にこのアラートをスローしているようです。では、なぜ常に0なのですか?これは本当に奇妙なことです。何度も遊んだ後、フォームをテーブルに変更すると、次のように機能します。

<table id="webcam-table">
    <thead>
        <tr>
            <th>Name</th>
            <th>...</th>
            <th><input type="checkbox" name="checkboxselectall" title="Select All" />&nbsp;&nbsp;
                <button type="submit" class="deletebutton" name="delete_video" title="Delete the selected videos">Delete</button></th>
        </tr>
    </thead>
    <tbody>
<form name="myform" action="">
... //the rest is the same

これはFFとChromeで機能しますが、IEはテーブルを正しくレンダリングできなくなります。したがって、これは解決策ではありません(とにかく、w3cの有効なコードではありません)。だから...何かアイデアはありますか?これをデバッグするために何かできることはありますか?

4

1 に答える 1

4

送信ボタンのクリックイベントをキャンセルしていないためです。if の部分だけでなく、両方のケースでそれを行う必要があります。その行をifの前に移動すると、コードは魔法のようにゼロではなくなります。

于 2013-01-15T01:02:03.977 に答える