これは本当に私を困惑させています。replaceWith()
ファイル入力フィールドを「クリア」するために使用しています。しかし、それを交換すると、間違った場所に戻されてしまい、その理由がわかりません。タイトルに「突然」という用語を使用したのは、さらに不思議なことに、週末に仕事をやめたときに、交換品が期待どおりに機能していたからです。今、私は仕事に戻りましたが、突然そうではありません。
を呼び出す前のソース HTML は次のreplaceWith()
とおりです。
<label>Audio</label>
<i style="color:#888888;">MP3 or OGG format recommended</i>
<br>
<button id="clear_audio_input" style="display:none;">Clear</button>
<input type="file" value="" name="source_audio" style="width:300px;">
<br>
<div style="margin-top:15px;">
<b>Current: </b>
<i id="current_audio_source">1360954394_121RuleOfRosePianoEtudeI.mp3</i>
<br>
<input id="source_audio_value" class="required_media" type="hidden" value="1360954394_121RuleOfRosePianoEtudeI.mp3" name="source_audio">
<span id="current_audio_info_a"><input type="checkbox" style="position:relative;top:3px;margin-left:0px;" value="yes" name="source_audio_delete">
現在の音声を削除しますか? 現在のオーディオは置き換えられます
「source_audio」という名前の FILE 入力フィールドの場所に注意してください。「クリア」ボタンの直後です。
を呼び出すreplaceWith()
と、HTML は次のようになります。
<label>Audio</label>
<i style="color:#888888;">MP3 or OGG format recommended</i>
<br>
<button id="clear_audio_input" style="display: none;">Clear</button>
<br>
<div style="margin-top:15px;">
<b>Current: </b>
<i id="current_audio_source">1360954394_121RuleOfRosePianoEtudeI.mp3</i>
<br>
<input type="file" value="" name="source_audio" style="width:300px;">
<input id="source_audio_value" class="required_media" type="hidden" value="1360954394_121RuleOfRosePianoEtudeI.mp3" name="source_audio">
<span id="current_audio_info_a" style="display: inline;"><input type="checkbox" style="position:relative;top:3px;margin-left:0px;" value="yes" name="source_audio_delete">
現在の音声を削除しますか? 現在のオーディオは置き換えられます
数行下の別の DIV 内にあることに注意してください。
「クリア」ボタンのアクションを制御するスクリプトは次のとおりです。
$("#clear_audio_input").live("click", function() {
$("input[name='source_audio']").replaceWith($("input[name='source_audio']").val('').clone(true));
$("#source_audio_value").val($("#current_audio_source").text());
$(this).hide();
$("#current_audio_info_a").show();
$("#current_audio_info_b").hide();
checkRequiredMedia();
return false;
});
これが基本的な意図されたワークフローです。ロード時には、まだクリアするものが何もないため、クリア ボタンは非表示になっています。ユーザーがファイルを選択すると、クリア ボタンが表示されます。ボタンをクリックすると、ファイル入力が (置き換えられることによって) クリアされ、ボタンが再び非表示になり、基本的にフォームがロード時と同じ状態に戻ります。
この奇妙なことが起こっている理由はありますか (特に、数日前には起こっておらず、それ以来何も変更していないため)?