1

私は次のコードを持っています。すべてが正常に機能しているように見えますが、確認通知と警告通知が複数回表示され、過度に煩わしい場合があります。次のコードに問題はありますか。アドバイスをありがとう。

    $('.order_stateselect').hover(function(){
        var value_text=$(this).find(":selected").text();
        var value_code=$(this).find(":selected").val();
        $(this).change(function(){
            if(confirm('Confirm Order Status Change?')){
                var conduct_status_chge=$.post('/seller/helpers/order_status_change.php',{order_item_id:$(this).parent('td').siblings('.order_item_id').text(),order_item_status:$(this).find(':selected').val()},function(data){
                    alert(data);
                })
                .error(function() {
                    $(this).find(':selected').removeAttr('selected');
                    $(this).find('option:contains(value_code)').attr('selected','selected');
                    alert('error');

                });
            }else{
                $(this).find(':selected').removeAttr('selected');
                $(this).find('option:contains(value_code)').attr('selected','selected');
            }
        });
    });

私がここでやっていることの簡単な説明。

これは、複数のオプションを持つ選択ボックスです。この選択ボックスは、アイテムのリスト内のテーブル セルの一部です。

つまり、各行にはアイテムが含まれ、各行にはその特定の行専用の選択ボックスがあることを意味します。

1) ホバーすると、ページの読み込み時に、選択したオプションの値がデータベースの値を介して読み込まれます。

2) ユーザーが選択ボックスから別の値を選択して選択を確認すると、$.post を実行します。

3) ユーザーがキャンセルを押した場合、または $.post が失敗する原因となるスクリプト呼び出しでエラーが発生した場合、選択したオプションをデータベースの元の値に戻します。

説明がわかりにくかったら申し訳ありませんが、他に情報が必要な場合はお知らせください。ありがとう。

4

1 に答える 1

3

私はあなたのコードから少し抜粋します:

$('.order_stateselect').hover(function(){
    var value_text=$(this).find(":selected").text();
    var value_code=$(this).find(":selected").val();
    $(this).change(function(){

マウス カーソルが領域に入ったときに、変更ハンドラーをアタッチしています。これが複数回発生すると、変更ハンドラも複数回適用されます。

.change(...)の外側を移動する必要があり.hover()ます。

$('.order_stateselect')
    .hover(function() { ... })
    .change(function() { ... })
于 2012-10-18T02:28:14.000 に答える