So, jetzt kommt die Lösung:
Um zusätzlich zu Deinem script den Dezimalpunkt zu löschen, habe ich es einfach davor gesetzt
Code:
// Numerics only
var id=thisValue.indexOf('.');
if(id >0) {
newValue=thisValue.replace('.','');
$(this).val(newValue).trigger('change');
}
if($.isNumeric(thisValue) === false) {
Also:
- Guck nach, ob ein Punkt vorhanden ist
- Wenn Ja
- Ersetze ihn durch Nichts
Leider klappte der Test auf "isInteger" nicht.
Wenn Du es so machen möchtest, würde ich eine einfache Validierung auf eine vernünftige Jahreszahl einbauen.
Da es "seit" heißt, wird die Jahreszahl also nicht größer als das aktuelle Jahr sein.
Dann wäre eine mögliche Validierung
strlen(D2a_Y017_X002)==4 and D2a_Y017_X002 le date('Y')
Also: Vier Stellen und kleiner oder gleich dem aktuellen Jahr.
Kannst Du dann auch als Tipp nehmen
Bitte, nur Jahreszahlen bis {date('Y')}
Oder (ich hacke immer noch auf der Eingabemaske herum)
mit der Bibliothek von Robin Herbots.
für das Jahr beispielhaft dies (von 1900 bis 2099)
Code:
<script src="https://cdnjs.cloudflare.com/ajax/libs/inputmask/4.0.9/jquery.inputmask.bundle.min.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).on('ready pjax:scriptcomplete',function(){
$('#question{QID} .answer_cell_X002 input[type="text"]').inputmask({ regex: "([1][9])|([2][0])[0-9][0-9]|",
'placeholder': '_',
'removeMaskOnSubmit': false,
'rightAlign': false,
});
});
</script>
Für die erste Spalte ähnlich, schau einfach in die Dokumentation!
Jetzt zu Deiner "Sonstigen"-Behandlung.
Das kann auch mit dem richtigen Identifier des Buttons (#ls-button-submit") nicht funktionieren, da dieses script ja für eine "normale" Matrix mit Radio-Buttons ist.
Siehst Du hier
if(($('input:radio[value!=""]:checked', this).length > 0 && $('input[type="text"]', this).val() == '') || ($('input:radio[value!=""]:checked', this).length == 0 && $('input[type="text"]', this).val() != '')) {
Es geht also darum, dass immer auch ein Radio-Button geklickt ist.
Da könnte man einfach validieren in der Art
(!is_empty(Textfeld) and !is_empty(Spalte 1) and !is_empty(Spalte 2) and ...) OR
(is_empty(Textfeld) and is_empty(Spalte 1) and is_empty(Spalte 2) and ...)
Alles gefüllt oder alles leer.
Bis dann
Ich habe wieder etwas vor, nämlich Kaffee trinken und Kuchen essen (damit @holch mir wieder ein Video schickt.
)
Joffm