2016-12-27 10 views
0

私は簡単なことをやっているが、私はなぜそれが次の問題が発生するのかわからない:フォームに値を入力し、要素を '読み込み'すると要素が表示されなくなります。ボタンクリックして削除dom hide要素私にそれを表示させない

Javascriptが以下の通りです:

<div> 
    <input id="magLog" name="magLog" type="text" style="width: 500px;"/> 
    <button id="StartITSMcheck">Check</button> 
</div> 
<div> 
    <div id="logContainer" class="filtersUNoBorder" style="padding-left: 8px; height:auto"> 
     <div id="loading" class="clear loading"> 
       Caricamento in corso...</div> 
     <!--Add text after check--> 
    </div> 
</div>  
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#loading").hide(); 
    }); 
    $("#StartITSMcheck").click(function() { 
     if ($("#magLog").val() != "" && $("#magLog").val() != undefined) { 
      $('#loading').show(); // show the loading message. 
      $.ajax({ 
       type: "GET", 
       url: '<%= Url.Action("StartITSMcheck", "Integration") %>', 
       async: false, 
       data: { "magLog": $("#magLog").val() }, 
       datatype: "html", 
       success: function (result) { 
        $("#logContainer").html(result); 
        $('#loading').hide(); // hide the loading message 
       }, 
       error: function (req, status, error) { 
        if (req.responseText.indexOf('12017') != -1) { 
         alert("CATCH: Status: " + status + " Error " + req.responseText); 
        } 
        else { 
         alert("Error getting data.com -> Req.responseText: " + req.responseText + "Req.status: " + req.status + " status: " + status + " error: " + error); 
        } 
       } 
      }); 
     } else $("#logContainer").html("<p>Gentilmente inserire un magazzino logico</p>"); 
    }); 
</script> 
+0

あなたの機能がエラーコールバックになる可能性があります。エラーコールの読み込みを非表示にすることもできます。 – Deep

+0

同期呼び出しを行うことは悪い考えです。ロードグラフィックが表示されない理由もあります。 – epascarello

+0

@Deepエラーでもhideを置く必要がありますが、表示上の問題ではありません。 – FeroX

答えて

1
$("#logContainer").html(result); 

これはおそらく、問題の原因です。 div内のすべてをあなたの応答に置き換えようとしています。これには読み込み要素が含まれています。次のようにdivの外側に配置してみてください。

<div id="logContainer" class="filtersUNoBorder" style="padding-left: 8px; height:auto"> 
    <!--Add text after check--> 
</div> 
<div id="loading" class="clear loading">Caricamento in corso...</div> 
+0

クリックの直後にDOM要素が消えてしまったため、この可能性が除外されました。また、あなたが提案した方法を試しましたが、実際にはdom要素は消えませんが、問題は残っています。ボタンを押すと、要求の保留中の状態では読み込みアニメーションが表示されません。 – FeroX

+0

AJAX呼び出しで 'beforeSend'オプションを使ってロード要素を表示してみてください。 例: '$ .ajax({ beforeSend:function(){$( '#loading')。show()} }' –

+0

のように:(。私がデバッグを使うと、 ;しかし、ブレークポイントを削除してボタンを押すと、ロードは売られず、数秒間 "クリック"されたキーだけが売られます。 – FeroX

関連する問題