2009-04-29 23 views
6

Birkaç dakika önce this question yanıtlamaya çalışın ve kendim için bu örneği hazırlanmıştır:Bu neden açılmıyor?

<script> 
    function trialMethod() 
    { 
    alert('On Submit Run!'); return true; 
    } 
    function trialMethod2() 
    { 
    alert('On Submit Run trialMethod2!'); return true; 
    } 
</script> 

<form id="aspnetForm" onsubmit="trialMethod();"> 
    <input type="submit"> 
</form> 

ilk ilişkisini keserek çalışmıyor Neden:

<input type="button" id="btnTrial1" value="UNBIND 1" 
    onclick="$('#aspnetForm').unbind('submit', trialMethod);"> 

Ama bu trialMethod2 yöntemi için çalışır:

<input type="button" id="btnTrial2" value="UNBIND 2" 
    onclick="$('#aspnetForm').bind('submit', trialMethod2).unbind('submit', trialMethod2);"> 

cevap

9

JQuery'nin olay modeli nedeniyle ilk engelleme senaryosu çalışmaz. jQuery, her olay işleyici işlevini $ ("# foo") üzerinden erişebileceğiniz bir dizide saklar (veriler). Unbind işlevi bu dizide verilen işlev için sadece görünüyor. Yani, sadece aşağıdaki şekilde kurtarabilir miyim

1

Daha önce benzer bir sorunla karşılaştım. Sonlandırdığım şey, yalnızca bağladığınız bir yöntemi kaldırabilmenizdi. Trialmethod() jquery ile bağlanmadığı için, yöntemin yoksayılması işe yaramazdı.

Lütfen herhangi bir şansı bulursanız lütfen bize bildirin.

Teşekkürler.

3

JQuery kullanıyorsa, hiç kimse onların kendi etkileşim kodlarıyla kendi biçimlendirmelerini karıştırmamalıdır.

böyle sayfaya bazı javascript ekleyin:

$(function() { 
    $('#aspnetForm').bind('submit',function() { 
     trialMethod(); 
    }); 
    $('#btnTrial2').bind('click',function() { 
     $('#aspnetForm').unbind('submit'); 
    }); 
    $('#btnTrial2').bind('click',function() { 
     $('#aspnetForm').bind('submit', trialMethod2).unbind('submit'); 
    }); 
}); 

Şimdi, bunda yolumdan ... şimdi olacak olsa bile her şey (şimdi çalışmalıdır unbinding önce #aspnetForm çift bağlama ikinci düğmeye basıldığında tamamen). Sorun şu ki, form asla başlamak için gerçekten 'bağlanmadı'. İşaretlemede onsubmit parametrelerini çözebilirsiniz.

+0

Hiç kimse, onların kendi etkileşim koduyla tam durarak kendi biçimlendirmelerini karıştırmamalıdır. – eyelidlessness

+0

Gerçekten, asla birleştirilmemelidirler. Dönemi. * Özellikle jQuery kullanıyorsanız: D. – KyleFarris

3

bind() ile ilave edildi() olay işleyicileri kurtarabilir miyim:. S

$ ('# aspnetForm') removeAttr ('onsubmit');

1

unbind ve eylemi form gönderme, bağlama ile bir hata var: Eğer bağlarsanız

sonra unbind ve sen, sen $(form).submit() ANCAK $(form INPUT[type=submit]).click() kullanamaz formunuzu göndermek istiyorum!