potřeboval bych udělat vlastní validatot již z toho co mám.
function validateForm() {
let $tabs = $('.tab');
let $currentTabInputs = $($tabs[currentTab].getElementsByTagName("input"));
let i = 0;
let valid = true;
$currentTabInputs.each(function (e) {
let $currentTabInput = $($currentTabInputs[e])
console.log($currentTabInput);
if ($currentTabInput.val() === "") {
$currentTabInput.addClass('invalid');
valid = false;
}
})
valid ? $($('.step')[currentTab]).addClass('finish') : false;
return valid;
}
Potřebuji aby uměl validovat hodnotu min a max a díky tomu vypsat
data-msg-min a data-msg-max
viz
$('#productwindow').click(function(){
$('#width').attr('min','300').attr('data-msg-min','Šířka musí být min 300mm').attr('max','3500').attr('data-msg-max','Šířka musí být max 3500mm').attr('placeholder', "Šířka(Min 300mm, Max 3500mm)");
$('#height').attr('min','300').attr('data-msg-min','Výška musí být min 300mm').attr('max','3000').attr('data-msg-max','Výška musí být max 3000mm').attr('placeholder', "Výška(Min 300mm,Max 3000mm)");
});
Potom možno validaci select a nevalidovat type file.
Ta funkce zvaliduje aktuální tab a podle toho dovolí nebo nedovolí přechod na další.
Ty teď natvrdo vždycky validuješ ten element "width", který předpokládám, že máš až někde na dalších tabech a zatím nevyplněný, takže s nedovolenou hodnou a nepustí tě to dál.
Okej tomu rozumím takže podle toho co píšeš mám použít něco takového
var inpObj = $currentTabInput.getElementById("width");
jenže na to mi console háže:
functions.js:66 Uncaught TypeError: $currentTabInput.getElementById is not a function
at HTMLInputElement.<anonymous> (functions.js:66)
at Function.each (jquery.js:2)
at r.fn.init.each (jquery.js:2)
at validateForm (functions.js:63)
at nextPrev (functions.js:42)
at HTMLButtonElement.onclick ((index):535)
Chápu že nezná tu funkci getElementId(); ale proč?
Ale ne, $currentTabInput už je ten jeden input, který budeš validovat.
// vsechny inputy na aktivnim tabu
let $currentTabInputs = $($tabs[currentTab].getElementsByTagName("input"));
// a postupne kazdy z nich zvalidovat
$currentTabInputs.each(function (e) {
// tohle je ten input k validaci
let $currentTabInput = $($currentTabInputs[e])
...
}
Ten getElementById tam nedává žádný smysl. A $currentTabInput je ten input jako jQuery objekt, ze kterého můžeš dostat ten "nativní" objekt. Tak jak to máš teď, by tohle mělo fungovat.
let $currentTabInput = $($currentTabInputs[e])
let inpObj = $currentTabInput[0];
Super tohle už pomohlo ale ještě bych měl jeden dotaz jak způsobit aby pod každým tím inputem se vypsal jeho error jelikož teď se mi errory vypisují pod jeden input což může někoho dost zmátnout...
<div class="col">
<!-- Material input -->
<div class="md-form form-sm wrap-input100 rs1-wrap-input100 validate-input">
<input n:name="width" id="width" class="form-control" placeholder="Šířka" type="number" min="100" data-msg-min="Šířka musí být nad 100mm" required>
<span id="valid_msg"></span>
</div>
</div>
<!-- Grid column -->
<!-- Grid column -->
<div class="col">
<!-- Material input -->
<div class="md-form form-sm wrap-input100 rs1-wrap-input100 validate-input">
<input n:name="height" id="height" class="form-control" placeholder="Výška" type="number" min="100" data-msg-min="Výška musí být nad 100mm" required>
<span id="valid_msg"></span>
</div>
</div>