Correzione JS per input con stesso ID

This commit is contained in:
Dasc3er 2021-02-23 15:47:25 +01:00
parent bc2dea3f74
commit f96a2789bc
5 changed files with 54 additions and 68 deletions

18
add.php
View File

@ -53,15 +53,10 @@ echo '
<script> <script>
$(document).ready(function(){ $(document).ready(function(){
cleanup_inputs(); let form = $("#custom_fields_top-add").parent().find("form").first();
var form = $("#custom_fields_top-add").parent().find("form").first(); // Ultima sezione/campo del form
let last = form.find(".panel").last();
// Campi a inizio form
form.prepend($("#custom_fields_top-add").html());
// Campi a fine form
var last = form.find(".panel").last();
if (!last.length) { if (!last.length) {
last = form.find(".box").last(); last = form.find(".box").last();
@ -71,8 +66,11 @@ $(document).ready(function(){
last = form.find(".row").eq(-2); last = form.find(".row").eq(-2);
} }
last.after($("#custom_fields_bottom-add").html()); // Campi a inizio form
restart_inputs(); aggiungiContenuto(form, "#custom_fields_top-add", {}, true);
// Campi a fine form
aggiungiContenuto(last, "#custom_fields_bottom-add", {});
}); });
</script>'; </script>';

View File

@ -488,16 +488,6 @@ function restart_inputs() {
$('.openstamanager-input').each(function () { $('.openstamanager-input').each(function () {
input(this); input(this);
}); });
/*
start_datepickers();
start_inputmask();
initNumbers();
start_superselect();
// Autosize per le textarea
initTextareaInput($('.autosize'));
*/
} }
/** /**
@ -707,12 +697,13 @@ function hideTableColumn(table, column) {
/** /**
* Funzione per aggiungere in un *endpoint* il contenuto di uno specifico *template*, effettuando delle sostituzioni di base e inizializzando i campi aggiunti. * Funzione per aggiungere in un *endpoint* il contenuto di uno specifico *template*, effettuando delle sostituzioni di base e inizializzando i campi aggiunti.
* @param endpoint_selector * @param {string|jQuery|HTMLElement} endpoint_selector
* @param template_selector * @param {string|jQuery|HTMLElement} template_selector
* @param replaces * @param {object} replaces
* @param {boolean} prepend
* @returns {*|jQuery|HTMLElement} * @returns {*|jQuery|HTMLElement}
*/ */
function aggiungiContenuto(endpoint_selector, template_selector, replaces = {}) { function aggiungiContenuto(endpoint_selector, template_selector, replaces = {}, prepend = false) {
let template = $(template_selector); let template = $(template_selector);
let endpoint = $(endpoint_selector); let endpoint = $(endpoint_selector);
@ -729,7 +720,11 @@ function aggiungiContenuto(endpoint_selector, template_selector, replaces = {})
// Aggiunta del contenuto // Aggiunta del contenuto
let element = $(content); let element = $(content);
if (prepend) {
endpoint.prepend(element);
} else {
endpoint.append(element); endpoint.append(element);
}
// Rigenerazione degli input interni // Rigenerazione degli input interni
element.find('.openstamanager-input').each(function () { element.find('.openstamanager-input').each(function () {

View File

@ -263,15 +263,10 @@ if (empty($record) || !$has_access) {
<script> <script>
$(document).ready(function(){ $(document).ready(function(){
cleanup_inputs(); let form = $("#module-edit").parent().find("form").first();
var form = $("#module-edit").find("form").first(); // Ultima sezione/campo del form
let last = form.find(".panel").last();
// Campi a inizio form
form.prepend($("#custom_fields_top-edit").html());
// Campi a fine form
var last = form.find(".panel").last();
if (!last.length) { if (!last.length) {
last = form.find(".box").last(); last = form.find(".box").last();
@ -281,8 +276,11 @@ if (empty($record) || !$has_access) {
last = form.find(".row").eq(-2); last = form.find(".row").eq(-2);
} }
last.after($("#custom_fields_bottom-edit").html()); // Campi a inizio form
restart_inputs(); aggiungiContenuto(form, "#custom_fields_top-edit", {}, true);
// Campi a fine form
aggiungiContenuto(last, "#custom_fields_bottom-edit", {});
}); });
</script>'; </script>';

View File

@ -35,20 +35,18 @@ echo '
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "multiple": "1", "required": 1, "values": "query=SELECT idtipoanagrafica AS id, descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica NOT IN (SELECT DISTINCT(x.idtipoanagrafica) FROM an_tipianagrafiche_anagrafiche x INNER JOIN an_tipianagrafiche t ON x.idtipoanagrafica = t.idtipoanagrafica INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = x.idanagrafica WHERE t.descrizione = \'Azienda\' AND deleted_at IS NULL) ORDER BY descrizione", "value": "'.(isset($idtipoanagrafica) ? $idtipoanagrafica : null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]} {[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "id": "idtipoanagrafica_add", "multiple": "1", "required": 1, "values": "query=SELECT idtipoanagrafica AS id, descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica NOT IN (SELECT DISTINCT(x.idtipoanagrafica) FROM an_tipianagrafiche_anagrafiche x INNER JOIN an_tipianagrafiche t ON x.idtipoanagrafica = t.idtipoanagrafica INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = x.idanagrafica WHERE t.descrizione = \'Azienda\' AND deleted_at IS NULL) ORDER BY descrizione", "value": "'.(isset($idtipoanagrafica) ? $idtipoanagrafica : null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "text", "label": "'.tr('Cognome').'", "name": "cognome", "id": "cognome_add", "required": 0 ]} {[ "type": "text", "label": "'.tr('Cognome').'", "name": "cognome", "id": "cognome_add" ]}
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "text", "label": "'.tr('Nome').'", "name": "nome", "id": "nome_add", "required": 0 ]} {[ "type": "text", "label": "'.tr('Nome').'", "name": "nome", "id": "nome_add" ]}
</div> </div>
</div>'; </div>';
echo ' echo '
@ -72,10 +70,8 @@ echo '
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "select", "label": "'.tr('Tipologia').'", "name": "tipo", "values": "list=\"\": \"'.tr('Non specificato').'\", \"Azienda\": \"'.tr('Azienda').'\", \"Privato\": \"'.tr('Privato').'\", \"Ente pubblico\": \"'.tr('Ente pubblico').'\"" ]} {[ "type": "select", "label": "'.tr('Tipologia').'", "name": "tipo", "id": "tipo_add", "values": "list=\"\": \"'.tr('Non specificato').'\", \"Azienda\": \"'.tr('Azienda').'\", \"Privato\": \"'.tr('Privato').'\", \"Ente pubblico\": \"'.tr('Ente pubblico').'\"" ]}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -99,7 +95,7 @@ echo '
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "select", "label": "'.tr('Nazione').'", "name": "id_nazione", "values": "query=SELECT id AS id, CONCAT_WS(\' - \', iso2, nome) AS descrizione FROM an_nazioni ORDER BY CASE WHEN iso2=\'IT\' THEN -1 ELSE iso2 END" ]} {[ "type": "select", "label": "'.tr('Nazione').'", "name": "id_nazione", "id": "id_nazione_add", "values": "query=SELECT id AS id, CONCAT_WS(\' - \', iso2, nome) AS descrizione FROM an_nazioni ORDER BY CASE WHEN iso2=\'IT\' THEN -1 ELSE iso2 END" ]}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
@ -125,7 +121,7 @@ echo '
echo ' echo '
<div class="col-md-4"> <div class="col-md-4">
{[ "type": "text", "label": "'.tr('Codice destinatario').'", "name": "codice_destinatario", "required": 0, "class": "text-center text-uppercase alphanumeric-mask", "maxlength": "7", "extra": "", "help": "'.tr($help_codice_destinatario).'", "readonly": "1" ]} {[ "type": "text", "label": "'.tr('Codice destinatario').'", "name": "codice_destinatario", "class": "text-center text-uppercase alphanumeric-mask", "maxlength": "7", "extra": "", "help": "'.tr($help_codice_destinatario).'", "readonly": "1" ]}
</div> </div>
</div> </div>
</div> </div>
@ -141,39 +137,37 @@ echo '
?> ?>
<script> <script>
var nome = $('#nome_add', '#modals > div'); var nome = input("nome");
var cognome = $('#cognome_add', '#modals > div'); var cognome = input("cognome");
var ragione_sociale = $('#ragione_sociale_add', '#modals > div'); var ragione_sociale = input("ragione_sociale");
var id_nazione = input("id_nazione");
// Abilito solo ragione sociale oppure solo nome-cognome in base a cosa compilo // Abilito solo ragione sociale oppure solo nome-cognome in base a cosa compilo
nome.keyup(function () { nome.on("keyup", function () {
if ($(this).val()) { if (nome.get()) {
ragione_sociale.prop('disabled', true).prop('required', false); ragione_sociale.disable();
} else if (!cognome.val()) { } else if (!cognome.get()) {
ragione_sociale.prop('disabled', false).prop('required', true); ragione_sociale.enable();
} }
}); });
cognome.keyup(function () { cognome.on("keyup", function () {
if ($(this).val()) { if (cognome.get()) {
ragione_sociale.prop('disabled', true).prop('required', false); ragione_sociale.disable();
} else if (!nome.val()) { } else if (!nome.get()) {
ragione_sociale.prop('disabled', false).prop('required', true); ragione_sociale.enable();
} }
}); });
ragione_sociale.keyup(function () { ragione_sociale.on("keyup", function () {
if ($(this).val()) { let disable = ragione_sociale.get() !== "";
nome.prop('disabled', true).prop('required', false);
cognome.prop('disabled', true).prop('required', false); nome.setDisabled(disable);
} else { cognome.setDisabled(disable);
nome.prop('disabled', false).prop('required', true);
cognome.prop('disabled', false).prop('required', true);
}
}); });
input("id_nazione").change(function() { id_nazione.change(function() {
if (input("id_nazione").getElement().selectData().descrizione === 'IT - Italia'){ if (id_nazione.getData().descrizione === 'IT - Italia'){
input("codice_destinatario").enable(); input("codice_destinatario").enable();
}else{ }else{
input("codice_destinatario").disable(); input("codice_destinatario").disable();

View File

@ -32,6 +32,7 @@ class SelectHandler implements HandlerInterface
{ {
$values['class'][] = 'openstamanager-input'; $values['class'][] = 'openstamanager-input';
$values['class'][] = 'select-input'; $values['class'][] = 'select-input';
$values['data-select2-id'][] = $values['id'].'_'.rand(0, 999);
$source = isset($values['ajax-source']) ? $values['ajax-source'] : (isset($values['select-source']) ? $values['select-source'] : null); $source = isset($values['ajax-source']) ? $values['ajax-source'] : (isset($values['select-source']) ? $values['select-source'] : null);