2013-07-18 15 views
12

FiddleSürükleme

$(document).live('mouseup', function() { 
    flag = false; 
}); 

var colIndex; 
var lastRow; 

$(document).on('mousedown', '.csstablelisttd', function (e) { 
    //This line gets the index of the first clicked row. 
    lastRow = $(this).closest("tr")[0].rowIndex; 

    var rowIndex = $(this).closest("tr").index(); 
    colIndex = $(e.target).closest('td').index(); 
    $(".csstdhighlight").removeClass("csstdhighlight"); 
    if (colIndex == 0 || colIndex == 1) //)0 FOR FULL TIME CELL AND 1 FOR TIME SLOT CELL. 
    return; 
    if ($('#contentPlaceHolderMain_tableAppointment tr').eq(rowIndex).find('td').eq(colIndex).hasClass('csstdred') == false) { 
     $('#contentPlaceHolderMain_tableAppointment tr').eq(rowIndex).find('td').eq(colIndex).addClass('csstdhighlight'); 

     flag = true; 
     return false; 
    } 
}); 

i tablo hücrelerini üzerinde sürükleme ediyorum. Sürüklerken (aşağı doğru hareket et), tablo kaydırmayı da kaydırmalıyım. ve ayrıca hücreleri ters (yukarı yön) seçmek istiyorum. Ne yapmalıyım?

tr sınıfında bir seçim yapıyorum.

+0

anladığım, sen ** fareyi üzerinde sürükleyerek, yerine yukarı veya aşağı satırları sürükleyerek ** satırları seçmek istiyorum. Bu doğru mu ? –

+0

JQuery [tablo sürükle ve bırak için JQury eklentisi] kullanarak tablo hücrelerini sürükleme hakkında bazı fikir edinmenizi öneririz (http://isocra.com/2008/02/table-drag-and-drop-jquery-plugin/) [Tablodaki tablo satırından diğerine sürükleyip bırakın] (http://stackoverflow.com/questions/14907809/drag-and-drop-table-row-from-one-tabs-) Şimdiden teşekkürler –

cevap

5

jsFiddle Güncelleme

.myselect { 
    -webkit-touch-callout: none; 
    -webkit-user-select: none; 
    -khtml-user-select: none; 
    -moz-user-select: moz-none; 
    -ms-user-select: none; 
    user-select: none; 
} 

Ve böyle javascript ile satır-seçimi idare: sadece

// wether or not we are selecting 
var selecting = false; 
// the element we want to make selectable 
var selectable = '.myselect tr:not(:nth-child(1)) td:nth-child(3)'; 

$(selectable).mousedown(function() { 
    selecting = true; 
}).mouseenter(function() { 
    if (selecting) { 
     $(this).addClass('csstdhighlight'); 
     fillGaps(); 
    } 
}); 
$(window).mouseup(function() { 
    selecting = false; 
}).click(function() { 
    $(selectable).removeClass('csstdhighlight'); 
}); 

// If you select too fast, js doesn't fire mousenter on all cells. 
// So we fill the missing ones by hand 
function fillGaps() { 
    min = $('td.csstdhighlight:first').parent().index(); 
    max = $('td.csstdhighlight:last').parent().index(); 
    $('.myselect tr:lt('+max+'):gt('+min+') td:nth-child(3)').addClass('csstdhighlight'); 
} 

Ben HTML’ye bir sınıf ekledi. Burada gösterdiğim yanı sıra tüm HTML ve CSS değişmedi. jsFiddle Güncelleme

: http://jsfiddle.net/qvxBb/2/

+0

merhaba pinouchon ru var – John

+0

@Means Sadece soru sor ... Bu anlık mesajlaşma değil. –

3

Tablonuzla ilgili birçok sorun var, ancak istediğinizi düzeltirim.
fare konteyner dışında olsun, masanız kaydırma yapmak için mousedown olay işleyicisi içinde bu kodu eklemek için:

$('body').on('mousemove', function(e){ 
    div = $('#divScroll');  
    if(e.pageY > div.height() && (e.pageY - div.height()) > div.scrollTop()) { 
     div.scrollTop(e.pageY - div.height()); 
    } 
}); 

ve bu, sizin mouseup olay işleyicisi içinde:

$('body').off('mousemove'); 

Bkz updated Fiddle

Ama şimdi, başka bir sorun görünür. Bu kodunuzun geri kalanı nedeniyle. Satırlar, fare sütunu bıraktığı için seçilmez. return false;

içindeki
$('#contentPlaceHolderMain_tableAppointment tr').eq(rowIndex).find('td').eq(colIndex).addClass('csstdhighlight'); 
    flag = true; 
    return false; //Remove this line 
} 

Çünkü return false; durak tarayıcı varsayılan davranışı (otomatik kaydırma) çıkarmadan

+0

cevap .... hücre seçimi Öğrenci adı kolonu üzerinde yukarı ve aşağı yön olabilir ... Nasıl – John

3

deneyin. Böyle http://jsfiddle.net/qvxBb/2/

devre dışı bırakın, normal seçim:

DEMO

+0

Khanh yapmalıyım Öğrenci adım sütun üzerinde yukarı ve aşağı yönde gitmek zorunda ... ilk ve ikinci sütun değil ... \ – John

İlgili konular