2012-02-12 3 views
0

if(ns1 == '' && ns2 == '') пусто, чем пользователь получит это предупреждение Please fill in both nameserver при нажатии кнопки «Отправить». Я хочу погасить предупреждение, когда пользователь нажимает текстовое поле ns1 и начинает печатать. Как я мог это достичь? Помоги мне, пожалуйста? Спасибо.jQuery выцветать предупреждение после ввода ключа

<script type="text/javascript"> 
$(document).ready(function(){ 

     $('#submitButton').click(function(){ 

       var rege = /^([a-z0-9][a-z0-9-]*\.)+[a-z]{2,3}\.$/i; 


     var zone = $('#zone').val(); 
     var nama_subdomain = $('#nama_subdomain').val(); 
     var ns1 = $('#ns1').val(); 
     var ns2 = $('#ns2').val(); 

if(ns1 == '' && ns2 == ''){ 
$('#display').html('Please fill in both nameserver'); 
$("#ns1").focus(); 
return false; 
} 

if(ns1 == ''){ 
$('#display').html('Please fill in nameserver 1'); 
$("#ns1").focus(); 
    return false; 
} 
else if(ns2 == ''){ 
$('#display').html('Please fill in nameserver 2'); 
$("#ns2").focus(); 
    return false; 
} 

var parts = ns1.split('.'); 
var parts2 = ns2.split('.'); 

if (parts.length < 3 || !rege.test(ns1)) 
{ $('#display').html('Invalid nameserver 1 format'); 
$("#ns1").focus(); 
return false; 
} 
else if (parts2.length < 3 || !rege.test(ns2)) 
{ $('#display').html('Invalid nameserver 2 format'); 
$("#ns2").focus(); 
return false; 
} 


     $('#display').html('<img src="http://i.imgur.com/UbMeQ.gif"> saving...'); 
      $.post('pros.php', { 
       zone : zone, 
       nama_subdomain : nama_subdomain, 
       nameserver1 : ns1, 
       nameserver2 : ns2 
      }, 
      function(zone) { 

      $('#display').html(zone); 
      } 
     ); 


     }); 
    }); 


    </script> 


HTML-:

<label for="data">Nameserver 1</label> 
      <input type="text" class="textInput" maxlength="255" size="30" value="" id="ns1" name="nameserver1"> 


      <label for="data">Nameserver 2</label> 
      <input type="text" class="textInput" maxlength="255" size="30" value="" id="ns2" name="nameserver2"> 

    <div id="display" style="color: green;"> 

<button id="submitButton" value="Save" type="button"><span>Save</span></button> 

ответ

1

Attach обработчик с keypress событий на том состоянии, которое будет исчезать из сообщения, а затем отвяжите его, как только пользователь наберет что-нибудь.

if(ns1 == '' && ns2 == ''){ 
    $('#display').html('Please fill in both nameserver'); 
    $("#ns1").focus() 
    .unbind('keypress') 
    .keypress(function(){ 
     if(this.value != ''){ 
     //fade out the message 
     $('#display').fadeOut(); 

     //unbind the keypress event we don't need it now 
     $(this).unbind('keypress'); 
     } 
    }); 
    return false; 
} 

Сделайте то же самое для другого текстового поля.

+0

Я просто обнаружил проблему. Я делаю то же самое с другим текстовым полем, и теперь предупреждение появляется только один раз. Например, я нажимаю submit с пустым текстовым полем, поэтому получаю предупреждение «Пожалуйста, заполните оба сервера имен». После этого я начинаю печатать в 'ns1', и предупреждение исчезает, что очень приятно, но когда я снова нажимаю submit (получаю данные в текстовом поле ns1, но нет данных в текстовом поле ns2), не появляется предупреждение. Я полагаю, чтобы получить 'Пожалуйста, заполните nameserver 2', но предупреждение не появляется только один раз. Вот код для проверки корректности текстового поля 'ns2': – sg552

+0

' else if (ns2 == '') { $ ('# display'). Html ('Пожалуйста, заполните nameserver 2'); $ ("# ns2"). Фокус() .unbind ('нажатие клавиши') .keypress (функция() { если (this.value! = '') {// затухать сообщение $ ('#display'). fadeOut(); // отвязать событие keypress, которое нам не нужно сейчас $ (this) .unbind ('keypress'); } }); return false; } 'Пожалуйста, помогите мне. – sg552

+1

Перед тем, как показывать это сообщение, вы должны «fadeIn» отображать сообщение. Измените этот '$ ('# display'). Html ('Пожалуйста, заполните оба сервера имен');' to '$ ('# display'). Html ('Пожалуйста, заполните оба сервера имен'). FadeIn();' at все места. – ShankarSangoli

0

Это должно работать именно так, как вы описали:

$(document).ready(function(){ 

     $('#submitButton').click(function(){ 

       var rege = /^([a-z0-9][a-z0-9-]*\.)+[a-z]{2,3}\.$/i; 


     var zone = $('#zone').val(); 
     var nama_subdomain = $('#nama_subdomain').val(); 
     var ns1 = $('#ns1').val(); 
     var ns2 = $('#ns2').val(); 

if(ns1 == '' && ns2 == ''){ 
$('#display').show().html('Please fill in both nameserver'); 
$("#ns1").focus(); 
return false; 
} 

if(ns1 == ''){ 
$('#display').show().html('Please fill in nameserver 1'); 
$("#ns1").focus(); 
    return false; 
} 
else if(ns2 == ''){ 
$('#display').show().html('Please fill in nameserver 2'); 
$("#ns2").focus(); 
    return false; 
} 

var parts = ns1.split('.'); 
var parts2 = ns2.split('.'); 

$('#ns1, #ns2').keypress(function(){ 
    $('#display').fadeOut(); 
}); 
+0

Таким образом, изменения были сделаны только в этом '$ ('# ns1, # ns2'). Keypress (function() { $ ('# display'). FadeOut(); });' correct? Ну, я использую его, и когда я нажимаю текстовое поле и начинаю вводить предупреждение, оно не просто исчезает, оно все еще там. – sg552

+1

Могу ли я увидеть фактическую веб-страницу? – skimberk1

+0

Привет, я ценю вашу помощь, но проблема решена. Еще раз спасибо :) – sg552

Смежные вопросы