2011-01-15 6 views
0

Ich habe noch eine letzte Sache auf einem Projekt und es ist ein doozy. Dies ist nicht nur meine erste Web-Anwendung, sondern auch die erste, die ich Jquery, CSS und MVC verwendet habe. Ich habe keine Ahnung, wie ich damit verfahren soll.Jquery-Bedingungen, Fensterpositionen und Ansichtsdaten. Oh mein!

Was ich zu tun versucht, ist:

In meinem Controller, ein Abfall Artikel wird validiert und basierend auf den Ergebnissen eines dieser Dinge passieren kann. Die Validierung ist abgeschlossen, es passiert nichts Schlimmes, was ViewData ["FailedWasteId"] auf -9999 setzt. Es ist ein neuer Abfallgegenstand und die Validierung hat nicht bestanden, was ViewData ["FailedWasteId"] auf 0 setzt. Es ist ein existierender Abfallgegenstand und die Validierung hat nicht bestanden, was ViewData ["FailedWasteId"] auf die ID des Abfallgegenstandes setzt .

Diese Viewdata [ „FailedWasteId“] auf Seite Last gesetzt

<%=Html.Hidden("wFailId", int.Parse(ViewData["WasteFailID"].ToString()))%> 

Verwendung Wenn die Validierungen nicht passieren, dann die Seite zoomt (von window.location) zu einem unsichtbaren div, öffnet sich das unsichtbare div usw. Hoffentlich sind meine Absichten mit diesem schlechten Versuch von jQuery klar.

Der neue Abfall div ist und die vorhandenen Artikel divs dynamisch erzeugt werden (das weiß ich Werke) „>

Also hier meine Frage ist ... Hilfe? Ich kann nicht einmal die Daten bekommen richtig zu analysieren, noch kann ich die conditionals bekommt sogar. zu arbeiten, und da dies nach dem Post geschieht, kann ich nicht firebug bekommt meinen Schritt für Schritt durch den Debugger zu helfen, wie das ist nicht Skript noch geladen.

 $(document).ready(function() { 
      var wasteId = parseInt($('#wFailId').text()); 

      if (wasteId == -9999) { 
       //No Issue 
      } 
      else if (wasteId < 0) { 
       //Waste not saved to database 
      } 
      else if (wasteId == 0) { 
       //New Waste 
       window.location = '#0'; 
       $('.editPanel').hide(); 
       $('#GeneratedWasteGrid:first').before(newRow); 
       $('.editPanel').appendTo('#edit-panel-row').slideDown('slow'); 
      } 
      else if (wasteId > 0) { 
       //Waste saved to database 
      } 
     }); 
+0

ich wünschte, ich jedes Mal ein Nickel hatte jemand hat "A, B und C oh my!" auf dieser Seite. – DJTripleThreat

+0

@DJTripleThreat LOL –

+0

können Sie dies versuchen http://awesome.codeplex.com/, um Ihre Arbeit mit jquery nachlassen – Omu

Antwort

3
var wasteId = parseInt($('#wFailId').text()); 

Diese Zeile ist falsch. Es attempts to get the text contents im Innern des verborgenen input Element, das die leere Zeichenkette ist, weil kein Inhalt vorhanden (z „Hallo“ in <span id="foo">Hello</span>). Das verursacht parseInt(), um den Wert NaN (Not a Number) zurückzugeben, wodurch jede Ihrer Bedingungen fehlschlägt, aber keine JavaScript-Ausnahme ausgelöst wird.

Der Wert Sie suchen, existiert stattdessen als das Attribut value des Elements, .val() abrufbaren mit:

var wasteId = parseInt($('#wFailId').val(), 10); // or use: 
var wasteId = +$('#wFailId').val(); 

(JavaScript ist unary plus operator ist das, was ich würde, wenn notwendig, um eine Zahl zu werfen verwenden Beachten Sie, dass in. Jedenfalls ist es eine schlechte Praxis parseInt() ohne Angabe des Basis/radix 10, zu verwenden, da sonst 010 als Oktalzahl interpretiert wird. 8 in dezimal)

Verwandte Themen