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

View File

@ -488,16 +488,6 @@ function restart_inputs() {
$('.openstamanager-input').each(function () {
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.
* @param endpoint_selector
* @param template_selector
* @param replaces
* @param {string|jQuery|HTMLElement} endpoint_selector
* @param {string|jQuery|HTMLElement} template_selector
* @param {object} replaces
* @param {boolean} prepend
* @returns {*|jQuery|HTMLElement}
*/
function aggiungiContenuto(endpoint_selector, template_selector, replaces = {}) {
function aggiungiContenuto(endpoint_selector, template_selector, replaces = {}, prepend = false) {
let template = $(template_selector);
let endpoint = $(endpoint_selector);
@ -729,7 +720,11 @@ function aggiungiContenuto(endpoint_selector, template_selector, replaces = {})
// Aggiunta del contenuto
let element = $(content);
endpoint.append(element);
if (prepend) {
endpoint.prepend(element);
} else {
endpoint.append(element);
}
// Rigenerazione degli input interni
element.find('.openstamanager-input').each(function () {

View File

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

View File

@ -35,20 +35,18 @@ echo '
</div>
<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 class="row">
<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 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>';
echo '
@ -72,10 +70,8 @@ echo '
</div>
<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 class="row">
@ -99,7 +95,7 @@ echo '
<div class="row">
<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 class="col-md-4">
@ -125,7 +121,7 @@ echo '
echo '
<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>
@ -141,39 +137,37 @@ echo '
?>
<script>
var nome = $('#nome_add', '#modals > div');
var cognome = $('#cognome_add', '#modals > div');
var ragione_sociale = $('#ragione_sociale_add', '#modals > div');
var nome = input("nome");
var cognome = input("cognome");
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
nome.keyup(function () {
if ($(this).val()) {
ragione_sociale.prop('disabled', true).prop('required', false);
} else if (!cognome.val()) {
ragione_sociale.prop('disabled', false).prop('required', true);
nome.on("keyup", function () {
if (nome.get()) {
ragione_sociale.disable();
} else if (!cognome.get()) {
ragione_sociale.enable();
}
});
cognome.keyup(function () {
if ($(this).val()) {
ragione_sociale.prop('disabled', true).prop('required', false);
} else if (!nome.val()) {
ragione_sociale.prop('disabled', false).prop('required', true);
cognome.on("keyup", function () {
if (cognome.get()) {
ragione_sociale.disable();
} else if (!nome.get()) {
ragione_sociale.enable();
}
});
ragione_sociale.keyup(function () {
if ($(this).val()) {
nome.prop('disabled', true).prop('required', false);
cognome.prop('disabled', true).prop('required', false);
} else {
nome.prop('disabled', false).prop('required', true);
cognome.prop('disabled', false).prop('required', true);
}
ragione_sociale.on("keyup", function () {
let disable = ragione_sociale.get() !== "";
nome.setDisabled(disable);
cognome.setDisabled(disable);
});
input("id_nazione").change(function() {
if (input("id_nazione").getElement().selectData().descrizione === 'IT - Italia'){
id_nazione.change(function() {
if (id_nazione.getData().descrizione === 'IT - Italia'){
input("codice_destinatario").enable();
}else{
input("codice_destinatario").disable();

View File

@ -32,6 +32,7 @@ class SelectHandler implements HandlerInterface
{
$values['class'][] = 'openstamanager-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);