JS/AJAXでフォームのリストをクリックしてフォームを送信しています。 JavaScriptは、アクティブな要素に基づいて送信タイプを決定します。これは複数のブラウザにまたがって動作しています。JavaScript ActiveElementはSafariのフォームではありません
問題:MAC上のSafari(バージョン10.0.2)は、ボタンの代わりにactiveElementをフォームと見なすため、getAttributeはnullを返します。クリックされた要素を取得する方法はありますか?ユーザーがクリックしたボタンを知る必要があります。
HTMLスタッフ:
<div id="#Records">
<form action="update.php" method="post">
...
<input name="submit" type="submit" data-action="send" value="send stuff" />
<input name="submit" type="submit" data-action="update" value="update" />
<input name="submit" type="submit" data-action="delete" value="delete" />
</form>
</div>
JavaScriptのもの
$("#Records form").submit(function (e) {
e.preventDefault();
var url = this.action;
var data = $(this).serializeArray();
var action = document.activeElement.getAttribute('data-action');
data.push({ name: 'submit', value: action });
$.ajax({
type: "POST",
data: data,
cache: false,
url: url
}).done(function (data) {
$("#Records").html(data);
}).fail(function (result) {
ShowMessage("Error updating record!");
});
return false;
});
を歓迎します。代わりにボタンボタンを使用してください。 –
おそらくこれに関連しています:http://stackoverflow.com/questions/41841688/different-value-e-target-in-browers(質問の下のコメントをチェックしてください)、FFは 'activeElement'をまったく設定しません(それは体を保つ)。しかし、@TinyGiantは正しく、ここにサブミットボタンを使用しないでください。*スクリプトなし*フォールバックがないので、 'submit'を使うのは意味がありません。 – Kaiido