私はページに複数のフォームがあり、それらはJinja2とFlaskで生成され、各フォームには独自のIDがあり、各フォームにボタンがあります。ボタンをクリックしてボタンが実際に配置されているフォームの値を取得したいと思います。しかし、私はフォームをシリアル化しようとすると、それは空です。すべてのconsole.log
行は、各ボタンが実際にそれが置かれているフォームを取得しない、正常に動作し提出フォームには値がありません
HTML:。
<form id='{{ "item-"+item.articleNr }}' class="itemTemplate">
<div class="thumb">
<img style="width: 200px;height: 200px;" src="{{ url_for('static',filename='images/'+item.image) }}">
</div>
<div class="contentWrapper">
<div class="content" id="item-content">
<label id="articleNameBlock" name="articleName">{{ item.articleName }}</label>
<div class="articleNrBlock" name="articleNr">{{ item.articleNr }}</div>
<div class="eanBlock" name="ean">{{ item.ean }}</div>
<div class="articleCodeBlock" name="articleCode">{{ item.articleCode }}</div>
<div class="articleColorBlock" name="color">{{ item.Color }}</div>
<div class="priceBlock" name="price">{{ item.Price }}</div>
<div class="buttons">
<button id="addLabel" class="ui-btn ui-btn-inline btn btn-success" type="submit">Label Aanvragen</button>
</div>
</div>
</div>
</form>
JS:
$(document).ready(function(){
$('.btn-success').on('click',function(){
console.log('The addButton is clicked.');
var $form = $(this).parents('form');
var data = $form.serialize();
console.log('Form '+ $form.attr('id'));
console.log(data)
});
//when the form is submitted
$('form').submit(function (evt) {
evt.preventDefault(); //prevents the default action
});
})
カットの2行:ここでのソリューションです - '変数$フォーム= $(この).parents( '形式は'); VAR –
あなたのフォームにある唯一のフォーム要素は、送信ボタンです(フォームの要素は、送信ボタンです)。 。実際のデータはここに送信されると思われますか?または、名前属性を追加するとdivがフォーム要素になるという印象を受けていますか(無効なHTML btw。divにはname属性がありません)?それは当然のことではありません。実際に値を送信する場合は、inputやtextareaなどのフォーム要素を使用する必要があります。 – CBroe
ボタンをクリックするか、フォーム送信を処理します。両方を扱うことは、混乱のレシピです。フォームの送信を処理するIMHOはほんの少しです。 CBroe氏が指摘したように、フォームには入力がありません。いくつかの情報を表示しますが、フォームを送信するためにシリアライズされるコントロールには表示されません。 – ADyson