Nedávejte neviditelný obsah po odeslání formuláře (serializovat) [duplicitní]

0

Otázka

Mám formulář s několika prvky div, že nejsou viditelné (Přepínání jQuery), protože interakce s uživatelem. Po odeslání formuláře bych chtěl uložit pouze viditelné (vyplní uživatel) prvky. Nemůžu se dostat do práce. Díky předem!

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $('#content').text($('#myform').serialize());
    });
});
</script>
</head>
<body>

<form action="" id="myform">
  First name: <input type="text" name="FirstName" value="Mickey"><br>
  Last name: <input type="text" name="LastName" value="Mouse"><br>
  <div style="display:none;"><input type="text" name="isthishidden" value="maybe"></div>
 <input type="hidden" name="action" value="verwerk">
</form>
<button>Serialize form values</button>
<p></p>
<div id="content"></div>

</body>
</html>
forms html javascript jquery
2021-11-23 20:08:53
1

Nejlepší odpověď

2

Jeden malý trik, aby váš kód je to možné:

$('#content').text($('#myform :visible').serialize());

$(document).ready(function(){
  $("button").click(function(){
    $('#content').text($('#myform :visible').serialize());
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<form action="" id="myform">
  First name: <input type="text" name="FirstName" value="Mickey"><br>
  Last name: <input type="text" name="LastName" value="Mouse"><br>
  <div style="display:none;"><input type="text" name="isthishidden" value="maybe"></div>
 <input type="hidden" name="action" value="verwerk">
</form>
<button>Serialize form values</button>
<p></p>
<div id="content"></div>

2021-11-23 20:20:39

A co když bych chtěl psát skryté pole?
user1725719

Možná jsem špatně pochopil vaši otázku. Myslel jsem, že jsi chtěl jen post viditelné oblasti. Nebo jsi to myslel jen po polích s hodnotami (skryté nebo ne-skryté)?
Kinglish

Ne, to není špatně. To je další otázka. Jak mohu příspěvek viditelné oblasti, ale udělat post skryté pole.
user1725719

Jak jsi to měl původně publikováno všechna pole formuláře, viditelné nebo neviditelné. #form :visible najde pouze formulářové prvky, které jsou viditelné. Dalo by se také udělat něco jako #form :not(:empty) pokud byste chtěli jen post data ze vstupů, který měl hodnoty v nich (ignoruje prázdné vstupy)...
Kinglish

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................