2010-03-11 19 views
10

Ich verwende Jeditable (Buchung in CakePHP) für die Eingabe auf meiner Seite. Ich möchte, dass Benutzer nur Zahlen in die Jeditable-Felder eingeben, also war meine Idee, auch die jQuery validation plugin zu verwenden, um zu überprüfen, ob nur Zahlen verwendet werden, ich verwende das bereits in anderen Teilen meiner Site.Bestätigen Sie das Feld "Jeditable"

Jeditable erstellt dynamisch ein Formular mit einer Eingabe, wenn Sie auf das Div klicken. Es scheint also nichts zu geben, an das Jquery validieren kann, und es scheint nicht wie normal zu funktionieren.

Ich bin in der Lage, den Klassennamen des Formulars über Jeditable (es hat nur eine Klasse attribute), die erstellte Eingabe hat nur ein name-Attribut, das standardmäßig auf "name".

Meine Fragen:

  • Ist dies ein guter Weg, nur Zahlen zu verlangen?
  • Wenn ja, wie funktioniert es mit Jquery validieren
  • Wenn nicht, was wäre eine bessere Lösung?

Vielen Dank im Voraus, und ich freue mich auf alle Antworten, die ich bekommen könnte;)

Antwort

13

Sie können jQuery Validierung Plugin direkt in Jeditable verwenden, um die Felder Ihres Formulars zu validieren

$('.edit').editable(your_url, { 
    onsubmit: function(settings, td) { 
     var input = $(td).find('input'); 
     $(this).validate({ 
      rules: { 
       'nameofinput': { 
        number: true 
       } 
      }, 
      messages: { 
       'actionItemEntity.name': { 
        number: 'Only numbers are allowed' 

       } 

      } 
     }); 

     return ($(this).valid()); 
    } 
}); 
+0

Sie deklarieren Eingabe aber nicht verwenden, was ist der Sinn? –

3

Sie können das onsubmit Ereignis in Jeditable verwenden und überprüfen, ob die Eingabe nur Zahlen hat. Dies ist nur ein Beispiel, habe ich es nicht versuchen:

function isNumeric(value) { 
    if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false; 
    return true; 
} 

$('.edit').editable(your_url, { 
    onsubmit: function(settings, original) { 
     if (isNumeric(original)) { 
      return true; 
     } else { 
      //display your message 
      return false; 
     } 
    } 
}); 
+0

Danke, ich hatte keine Zeit, es wirklich zu testen, in mein erster Versuch es hat nicht geklappt (immer wieder falsch) aber wie gesagt, ich hatte wirklich keine Zeit es richtig auszuprobieren, vielen Dank für deine Antwort trotzdem! :) – JanWillem

+0

Es scheint, dass Jeditable macht geltend, wenn Sie sowieso falsch zurück: http://markmail.org/message/cgagaclwtk6bt4yv Die Codeänderung in der URL erwähnt ist leider nicht mehr verfügbar :(Ich hoffe jemand kann mir helfen, zu erhalten – JanWillem

+0

Dies funktioniert in der aktuellen Version von jEditable. –

10

dieser Code für mich gearbeitet

function isNumeric(value) { 
    if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false; 
    return true; 
} 

$('.edit').editable(your_url, { 
    onsubmit: function(settings, td) { 
     var input = $(td).find('input'); 
     var original = input.val(); 
     if (isNumeric(original)) { 
      console.log("Validation correct"); 
      return true; 
     } else { 
      console.log("Validation failed. Ignoring"); 
      input.css('background-color','#c00').css('color','#fff'); 
      return false; 
     } 
    } 
}); 
+0

Oooh.console.log * wie * – jonasespelita

+0

die $ (td) .find ('input'); Wird nur für Tabellendaten benötigt? – shennyL

0

Für mein Projekt habe ich den Funktionsnamen in isAceptable geändert, weil ich Klammern, Bindestriche, Punkte Teil der Telefonnummer sein darf.

function isAcceptable(value) { 
    if (value == null || !value.toString().match(/^[-+]?\d*\.?[\d\s().-]+$/)) return false; 
    return true; 
} 
-1

öffnen jquery.editable.js und finden: onEdit Funktion

/* setup some functions */ 
     var onedit = settings.onedit || function() { }; 

und einige wie:

$('.edit').editable(your_url, { 
    onedit:function(){ 
      alert("original value"+$(this).text()); 
    }, 
});