2014-04-14 75 views
0

我需要我的聯繫表單幫助。我試圖在用戶點擊框時自動刪除標籤,但我似乎無法弄清楚如何。Jquery從焦點上的聯繫表單中刪除標籤

這是HTML

<div class="six columns"> 
    <form> 
     <div class="row"> 
      <div class="six columns"> 
       <label class="gfield_label" for="Name" style="display: block;">Name<span class="gfield_required">*</span> 
       </label> 
       <input type="text" id="Name" required class="mobile-four" /> 
      </div> 
      <div class="six columns"> 
       <label class="gfield_label" for="Name" style="display: block;">Company</label> 
       <input type="text" id="Name" required class="mobile-four" /> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="six columns mobile-four"> 
       <label class="gfield_label" for="email" style="display: block;">Email<span class="gfield_required">*</span> 
       </label> 
       <input type="email" class="mobile-four" id="email" required /> 
      </div> 
      <div class="six columns mobile-four"> 
       <label class="gfield_label" for="phone" style="display: block;">Phone<span class="gfield_required">*</span> 
       </label> 
       <input type="phone" class="mobile-four" id="phone" required /> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="twelve columns mobile-four"> 
       <label class="gfield_label" for="message" style="display: block;">Message<span class="gfield_required">*</span> 
       </label> 
       <textarea id="message" cols="30" rows="3"></textarea> 
      </div> 
      <div class="three columns centered"> 
       <button id="contact-submit-btn" class="btn btn-block btn-danger">Contact us Now!</button> 
      </div> 
     </div> 
    </form> 

</div> 

,這是迄今爲止我已經嘗試了JS。但似乎沒有任何工作。

$('input, textarea').focus(); 
    $(this).prev('label').hide(); 
}); 


$('.gfield_label').focus(function() { 
    $('label.mobile-four[for="' + $(this)[0].id + '"]').hide(); 
}); 

$('.gfield_label').each(function() { 
    2 
    var elem = $(this); 
    3 
    $('label[for="' + $(this).attr('id') + '"]').click(function() { 
     4 
     elem.focus(); 
     5 
    }); 
    6 
    if ($(this).val() != '') { 
     7 
     $('label[for="' + $(this).attr('id') + '"]').hide(); 
     8 
    } 
    9 
}).focus(function() { 
    10 
    $('label[for="' + $(this)[0].id + '"]').hide(); 
    11 
}).blur(function() { 
    12 
    if ($(this).val() == '') { 
     13 
     $('label[for="' + $(this)[0].id + '"]').show(); 
     14 
    } 
    15 
}).change(function() { 
    16 
    if ($(this).val() != '') { 
     17 
     $('label[for="' + $(this)[0].id + '"]').hide(); 
     18 
    } 
    19 
}) 

如果有人能幫上忙,那會很好。該網頁是在beta.harbordev.com/contact.html

非常感謝

UPDATE !!!!!

$(function() { 
    $('input, textarea').on('focus blur', function() { 
     $(this).prev().toggle(); 
    }); 
}); 

此建議類型工作。它現在在網站上,但不知怎的,消息字段(textarea)總是隨着其他選擇而消失,並且在沒有選擇任何東西時也消失。有人知道爲什麼嗎?

+1

你有沒有嘗試在document.ready中打包? – adeneo

+0

@LauraSchoebel請編輯你的主題類型;) –

+0

@LauraSchoebel - 有什麼原因,你不使用'佔位符'? http://www.w3schools.com/tags/att_input_placeholder.asp –

回答

2
$(function() { 
    $('input, textarea').on('focus blur', function() { 
     $(this).prev().toggle(); 
    }); 
}); 

FIDDLE

+0

你的代碼有點工作。看一看。然而,消息字段總是消失與其他任何被點擊的消息。你能幫助解決這個問題嗎? –

+0

什麼消息字段,它們如何消失? – adeneo

+0

繼續beta.harbordev。com/contact.html –

0

你可以試試下面的代碼:

Working Deom

$('input, textarea').focus(function(){ 
     $(this).prev('label').hide(); 
}); 
+0

這個讓我甚至點擊任何東西之前,所有的標籤都消失了。我的意思是技術上朝着正確方向邁出了一步,但仍然沒有點擊。 –

+0

正在爲我工​​作... –

+0

如果您想單擊然後將「重點單擊」替換... –

0

試試這個:

$('input, textarea').keyup(function(){ 
if($(this).val()=="") 
     $(this).prev('label').show(); 
else 
     $(this).prev('label').hide(); 
}); 

Working Demo

+0

我試過你的代碼,但不幸的是沒有改變。 –

+0

@LauraSchoebel:你試過插入文字嗎? –

0

這是我想出了。我假設你試圖在值存在時隱藏標籤,如果它不存在,它會再次顯示。

這不依賴於你的HTML結構,如果你沒有處理一致的標記,這是很好的。

var $inputs = $(':input'), 
    $labels = $('label'); 

$inputs.on('input blur focus', function() { 

    var $input = $(this), 
     value = $input.val(), 
     id = $input.attr('id'), 
     $label; 

    $label = $labels.filter(function(){ 
    return $(this).attr('for') === id; 
    }); 

    $label.toggle(value.length === 0); 

}).trigger('input'); 

,這裏是一個小演示:http://jsbin.com/jigucuna/4/edit?html,js,output

PS:你可能想看看進入placeholder屬性爲好。