2012-08-14 19 views
7

Kullanıcı bir bağlantıyı tıklattığında jQuery modal iletişim kutusunu açmaya çalışıyorum. Sonra iletişim kutusuna harici bir php dosyası yüklemek istiyorum.jquery modal iletişim kutusundaki harici php dosyasını yükle onclick

$(document).ready(function() { 
    $('#register').dialog({ 
     title: 'Register for LifeStor', 
     resizable: true, 
     autoOpen:false, 
     modal: true, 
     hide: 'fade', 
     width:350, 
     height:275, 
     });//end dialog 
     $('#reg_link').click (function() { 
      open: (function(e) { 
      $('#register').load ('register.php'); 
     }); 
     }); 
    }); 

ve bu html: Bu jquery kullanıyorum

ekrana ayarlanır
<div id="register"></div> 

: .css dosyasında yok.

Dahası, bir form içinde, bağlantı denir:

<td><font size="2">Not registered? <a href="#" name="reg_link">Sign-Up!</a></td> 

(Ben div öğelerine tablo değişiyor olacağım).

Bu kodla ilgili herhangi bir hata alamıyorum, ancak bağlantıyı tıklattığımda hiçbir şey olmuyor. Yukarıdakilerin çoğunu diğer yığın taşma yazılarından aldım. Bir şey mi eksik? Tablo html karışıyor mu?

Selamlar ... sayfa .load()

Tıklama işleyici sözdizimi hataları var yeni içerikle kabın içeriğini değiştirir yüklemek sonra

cevap

16

yerine id="reg_link" olmalıdır Eğer name="reg_link" var
<a href="#" name="reg_link">Sign-Up!</a> 

, yani

<a href="#" id="reg_link">Sign-Up!</a> 

Yani kullanabileceğiniz

$('#reg_link').click(function(e) { 
    e.preventDefault(); 
    $('#register').load('register.php'); 
}); 

bir diyalog yapmak için kod aşağıdaki ile çalışabilmeleri

$(document).ready(function() { 

    var dlg=$('#register').dialog({ 
     title: 'Register for LifeStor', 
     resizable: true, 
     autoOpen:false, 
     modal: true, 
     hide: 'fade', 
     width:350, 
     height:275 
    }); 


    $('#reg_link').click(function(e) { 
     e.preventDefault(); 
     dlg.load('register.php', function(){ 
      dlg.dialog('open'); 
     }); 
     }); 
}); 

Just an example.

+1

Bu bitti - tüm parçaları bir araya getirdiniz, çok teşekkürler. – cdonahue

+0

Hoşgeldin :-) –

+0

@SheikhHeera: "Register.php" nin başka bir sayfaya giden bir bağlantıya sahip olduğunu söyleyin, buna onay.php diyebiliriz - aynı modal görünümde "confirmation.php" yi nasıl açarsınız? Teşekkürler! – greenpool

2

senin bir arada geçirerek gibi görünüyor, iletişim oluştur argüman olarak bir fonksiyon ve bir nesne, normal bir fonksiyon olmalıdır.

$('selector').click (function() { 
    //code 
}); 

Ayrıca <a> eleman bir isim değil id

$(document).ready(function() { 
    $('#reg_link').click (function() { 
     $('#register').load ('register.php', function(){ 
      $('#register').dialog({ 
       title: 'Register for LifeStor', 
       resizable: true, 
       modal: true, 
       hide: 'fade', 
       width:350, 
       height:275, 
      });//end dialog 
     }); 
    }); 
}); 

<td><font size="2">Not registered? <a href="#" name="reg_link" id="reg_link">Sign-Up!</a></td> 
1

olarak reg_link sahiptir gibi ben .dialog() fonksiyonu ile tamamen aşina değilim ama .click() yanlış kullanıyorsun. Sorunun bir kısmı, {} numaralı küme parantezleriyle ilgili bazı karışıklıklardır. İki ayrı şey için kullanılıyorlar ve ikisini burada karıştırıyorsunuz.

Kıvrık parantezlerin ilk kullanımı, bir bloğun iç kısmını belirtmektir: bir döngünün içi, bir koşulun içi, bir işlevin iç kısmı. Örneğin:

// some code in the global scope 
function something() 
{ 
    // some different code within this function block 
} 
// function's done, we're back in global scope 

ikinci kullanım özellikleri veya değerler aşağıdaki biçimde isimleri ya da anahtarları ile eşleştirilmiş bir nesne ya da birleştirici dizisi için (JavaScript Object gösterimi) JSON olup:

var jsonSomething = { 
    key1: value1, 
    key2: value2, 
    etc: etcvalue, 
}; 

$('#reg_link').click (function() { yazıyorsanız, bir JSON başlatmamaya, bu küme ayracıyla bir işlev bloğu açıyorsunuz. Böylece, open: yazdığınızda (bu bir JSON ve open anahtarını ayarlarsanız), bir şey kesinlikle beklediğiniz gibi çalışmayacak (Ben şaşırdım ... tür .. Aslında, bir hata yok). Bu kaşlı ayraçlar içinde yazmanız gereken şey bir fonksiyonun kodudur. Bu durumda, bu durum büyük ihtimalle sadece bu: Genel olarak

$('#reg_link').click (function() { 
    $('#register').load ('register.php'); 
}); 

, jQuery, şu sürümleri çok her iki kullanır ve çoğu zaman onları bir araya karıştırır (işlev geri aramalar olarak dahil argümanlar veya JSONs olarak JSONs kabul işlevler girişler), hangisinin hangisi olduğunu anlamak çok önemlidir.

DÜZENLEME: Bazı Googling re: Kendi kod dayanarak

$('#reg_link').click (function() { 
    $('#register').load ('register.php').dialog(/*argument(s) here*/); 
}); 

, .dialog() aslında: .dialog() da blok bu gibi görünmelidir anlamına gelir .load() sonra diyoruz gerekir düşündürmektedir böylece bitin doğru, tam kod varsayarak bir argüman olarak bir JSON götüren bir fonksiyon örneği şu şekildedir: senin linkte

$('#reg_link').click (function() { 
    $('#register').load ('register.php').dialog({ 
     title: 'Register for LifeStor', 
     resizable: true, 
     autoOpen: false, 
     modal: true, 
     hide: 'fade', 
     width:350, 
     height:275, 
    }); 
}); 
+0

Bu açıklama için teşekkürler - kaşlı ayraçlar etrafındaki karışıklığı temizler. .dialog JSON argümanlarını alır, bu yüzden siz ve #Musa'nın haklı olduğunu düşünüyorum. Ne yazık ki yukarıda henüz benim için çalışmıyor, bu yüzden araştırmaya devam edeceğim. – cdonahue

İlgili konular