Alt 16.03.2011, 18:08:00   #1 (permalink)
Zeta Sagittarii
Benutzerbild von Stex

ID: 54415
Lose-Remote

Stex eine Nachricht über ICQ schicken Stex eine Nachricht über Skype™ schicken
Reg: 11.05.2006
Beiträge: 1.231
Stex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes Ansehen
Standard jQuery - DOM-Navigation(children) und Validation

Moin,

ich versuche im Moment, ein System von Prototype auf jQuery umzustellen. Insgesamt ist jQuery wirklich hübsch und schnell, aber die Umstellung ist gewöhnungsbedürftig.

Ich hätte zwei Fragen, die für Leute, die jQuery regelmäßig nutzen relativ einfach zu beantworten sein dürften (zumindest die erste):

1. Mit Prototype konnte ich einfach auf alle "indirekten" Kinder zugreifen (also z.B. von "start_element" auf "found_child"):
Code:
1:
<div id="start_element"><div><div class="found_child"></div></div></div>
Das ging ganz einfach mit $('start_element').down('.found_child'), bei jQuery kann ich mit .children() aber scheinbar nur direkte Kinder erreichen. Habe ich da etwas grundlegendes übersehen?

2. Diese Frage bezieht sich auf http://docs.jquery.com/Plugins/Validation/

Options-Dokumentation: http://docs.jquery.com/Plugins/Valid...lidate#options

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
$j('#notification_form').validate({ ignore: ':hidden', rules: {skin_template_content: {remote: { type: 'post', data: { content: 'content', subject: 'subject'}, url: '/admin/skins/check_template_correctness/32'}}}})
Ich versuche, eine remote-validation hinzuzufügen (also ein Ajax-Request, der true/false zurückliefert und auf den diese validation wartet). Allerdings wird weder ein Fehler ausgegeben (auch mit debug:true nicht) noch wird der Request ausgeführt, die Regel wird einfach übergangen. Andere Regeln werden hingegen genutzt.

Ich habe zu Testzwecken die Parameter durch feste Werte ersetzt.

Sieht da jemand direkt den Fehler?

Vielen Dank schonmal im Voraus!
Stex ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 16.03.2011, 18:16:14   #2 (permalink)
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose-Remote

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.412
chrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehen
Standard

Zum 1.:

PHP-Code:
1:
2:
3:
4:
5:
6:
// normalerweise so
$('#start_element .found_child');
// solltest du allerdings .found_child in einem bereits vorliegenden Element (z.B. zwischengespeichert in einer Variable  startElem  ) haben, dann so
$('.found_child'startElem);
// bzw 
startElem.find('.found_child'); 
.find() sollte .children() sein, nur nicht die direkten Kinder finden.
Die Dokumentation ist eigentlich super, passend zu deinem Problem: http://api.jquery.com/category/traversing/
chrissel ist offline   Mit Zitat antworten
Alt 16.03.2011, 18:42:00   #3 (permalink)
Zeta Sagittarii
Benutzerbild von Stex

ID: 54415
Lose-Remote

Stex eine Nachricht über ICQ schicken Stex eine Nachricht über Skype™ schicken
Reg: 11.05.2006
Beiträge: 1.231
Stex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes Ansehen
Standard

Hm, ich bin fest davon ausgegangen, dass das über children() gehen würde und habe dabei die find()-Methode komplett übergangen (und trotzdem ewig gegoogled, allerdings ohne wirklich passende Begriffe).

Danke!

Edit: Läuft jetzt alles wunderbar und gefühlt dreimal so schnell wie mit Prototype

Geändert von Stex (18.03.2011 um 12:04:51 Uhr)
Stex ist offline Threadstarter   Mit Zitat antworten
Alt 17.03.2011, 20:44:47   #4 (permalink)
Woohooo!
Benutzerbild von chrissel

ID: 211634
Lose-Remote

chrissel eine Nachricht über ICQ schicken
Reg: 20.04.2006
Beiträge: 4.412
chrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehenchrissel genießt hohes Ansehen
Standard

Hm.. hatte nun mal Zeit mir dein zweites Problem anzuschauen.
Ich sehe da auf Anhieb keinen Fehler, außer: du benutzt $j(...) [warum j? Hast du jQuery vorher als $j definiert um Kollisionen vorzubeugen?] und am Ende ist kein Semikolon, beim Übertragen hierhin vergessen?
Am besten wäre da eine kleine Beispieldatei wo dein Problem ist.. dann kann man mal mit Firebug gucken. Falls du Firebug nicht kennst, ist wohl DAS Firefox-Addon für Webseitenentwicklung auf Client-Seite
chrissel ist offline   Mit Zitat antworten
Alt 18.03.2011, 11:57:22   #5 (permalink)
Zeta Sagittarii
Benutzerbild von Stex

ID: 54415
Lose-Remote

Stex eine Nachricht über ICQ schicken Stex eine Nachricht über Skype™ schicken
Reg: 11.05.2006
Beiträge: 1.231
Stex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes Ansehen
Standard

Ohne Firebug wäre ich schon verloren gewesen, als ich mit Ajax angefangen habe, das ist immer das erste, was an addons installiert wird

Das Semikolon war in der Tat nicht da, aber da es sich nur um eine einzige Script-Zeile handelt, wurde das ignoriert.

Firebug gibt da keine Fehler/Warnungen zurück, auch wenn das Validation-Skript sich im Debug-Mode befindet.

$j hatte ich als
Code:
1:
var $j = jQuery.noConflict();
definiert.

Ich habe mal eine Beispieldatei angehängt (diesmal nur mit jQuery()). Die Regel wird scheinbar komplett ignoriert, selbst das "required" wird nicht überprüft.

Nutze ich hingegen die classNames der Elemente (also z.B. class="required" bei der textarea) kann ich das Formular ohne value nicht abschicken.

Edit: Das hatte ich im ersten Post ganz vergessen: http://docs.jquery.com/Plugins/Valid...Methods/remote
Angehängte Dateien
Dateityp: zip validation.zip (10,4 KB, 0x aufgerufen)

Geändert von Stex (18.03.2011 um 12:18:39 Uhr)
Stex ist offline Threadstarter   Mit Zitat antworten
Alt 21.03.2011, 10:04:04   #6 (permalink)
Zeta Sagittarii
Benutzerbild von Stex

ID: 54415
Lose-Remote

Stex eine Nachricht über ICQ schicken Stex eine Nachricht über Skype™ schicken
Reg: 11.05.2006
Beiträge: 1.231
Stex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes AnsehenStex genießt hohes Ansehen
Standard

Ich habe es jetzt anderweitig gelöst:

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
jQuery.validator.addMethod('templateCorrectness',  function(valueelement) {
  var 
result false;
  
jQuery.ajax({
    
url:  '/admin/skins/check_template_correctness/32'
    
type'post'
    
async:  false
    
cachefalse
    
data: {
      
content'foo',
      
subject'bar'
    
}, 
    
success:  function(mes) {
       
result = (mes == 'true')}}); 
  return 
result;},  'Your  template did not render correctly.'); 
Wenn ich jetzt meinem Feld die Klasse "templateCorrectness" gebe, wird das alles wie gewünscht validiert. Warum das andere nicht ging weiß ich allerdings immer noch nicht.
Stex ist offline Threadstarter   Mit Zitat antworten
Antwort

Stichworte
jquery

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
jquery mini und 1.4.2 jquery.min.js - beißen sich resoucer Scripts & Software 3 04.02.2011 17:04:27
Frage zur Validation HTML 1.0/4.01 Transitional puuu Programmierung 7 21.03.2007 17:30:42


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46:18 Uhr.