我正在運行一個ajax呼叫,當我試圖提交時,我的輸入欄位在它下面得到了另一個div,并顯示錯誤,但如果我點擊按鈕太多次,它一直在添加新的訊息,一個在另一個之下
而且我還想在3秒后隱藏資訊。所以我的代碼中基本上有兩個問題
$.ajax({
url : $('#frm').attr('data-action') 。
type: 'post'。
data: $('#frm').serialize() 。
success。function(data) {
if (data.indexOf("emailissue"/span>) > -1) {
$("#emailaddress").parent()。 after("<div class='validation' style='color:red;font-size:0.90em;'>Please Provide valid email address</div> ")。
$('#validation').delay(3000).fadeOut()。
}else{
$("#ID").show()。 delay(5000).fadeOut() 。
$("#ID").css('display','none') 。
}
}
});
html是這樣的
<div class="form-group"/span>>
<label for="emailaddress"/span>>。 我們缺少你的電子郵件,請在下面輸入</label>/span>
< input type="text" name="emailaddress" id="emailaddress" placeholder="Enter your email" class="form-controll">
</div>
uj5u.com熱心網友回復:
當你試圖選擇元素時,為什么會出現雙'#'?
另外,在3秒之后,你需要從DOM中洗掉新創建的div,
僅僅呼叫fadeOut()是不夠的(我猜是設定不透明度為0)
uj5u.com熱心網友回復:
嘗試在DOM中設定一個靜態回應元素:
<div class="form-group"/span>>
<label for="emailaddress"/span>>。 我們缺少你的電子郵件,請在下面輸入</label>
< input type="text" name="emailaddress" id="emailaddress" placeholder="Enter your email" class="form-controll">
<div id="response"/span> class="validation"/span>> </div>>
</div>/span>
然后在ajax呼叫的回應中,更新#response元素的內容和可見性:
if (data.indexOf("emailissue"/span>) > -1)
{
$("#response").show().text('Please Provide a valid email address) 。
setTimeout(function(){
$('#response').fadeOut()。
}, 3000)。)
通過在隱藏/顯示#response元素之間進行切換,我們不再需要擔心額外的回應元素被添加,或者洗掉舊的回應元素。
這里是我制作的DEMO。點擊右側的 "測驗 "按鈕即可看到。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306726.html
標籤:
