2010-03-16 3 views
1

Я использую jQuery pluggin для быстрого и легкого form validation Мои формы используют значение ввода по умолчанию в качестве метки, и у меня есть небольшая функция onfocus и onblur javascript, чтобы показать и скрыть это, когда пользователь начнет вводить:jquery form validation

<input name='fnameREG' type='text' id='fnameREG' value='first name' size='70' onfocus='clearInput(this)' onblur='clearInput(this)' /> 
<input name='lnameREG' type='text' id='lnameREG' value='last name' size='70' onfocus='clearInput(this)' onblur='clearInput(this)' /> 

Моя проблема с проверкой является то, что при нажатии кнопки отправить в щелкнул pluggin считает, что все поля установлены, потому что они имеют значение по умолчанию. Я посмотрел, но не смог найти способ, который можно было бы использовать. Благодаря! ... Или кто-нибудь пришел к лучшему методу проверки?

И вот функция .addmethod для pluggin, которую я пытаюсь использовать unucessfuly для добавления нового метода, который проверяет значение по умолчанию. Есть идеи???

Mark ... ниже приведена моя функция ввода. Да, это в основном делает то же самое, что эффект водяного знака, но я использую это сейчас и не вижу большой причины для переключения. Хотя, если я не найду другой способ я буду использовать это, было бы просто включать удаление некоторой разметки:

function clearInput(field){ 
    if (field.defaultValue == field.value){ 
     field.value = ''; 
    } 
    else if (field.value == ''){ 
     field.value = field.defaultValue; 
    } 
} 
+0

Я бы все же был склонен использовать водяной знак, а не собственную функцию проверки. В итоге вы будете писать все больше и больше методов проверки для учета значения по умолчанию (например, defltRegex). Водяной знак будет работать с любыми методами проверки, которые вы используете, и это позволит вам создать водяной знак, чтобы он выглядел как инструкция, а не фактическое значение по умолчанию. – Mark

ответ

1

Вот что-то я на месте клиента:

var default_values = new Array(); 
$(document).ready(function() { 
    $("input.inputStyle, textarea").focus(function() { 
     if(!default_values[this.id]) { 
      default_values[this.id] = this.value; 
     } 
     if(this.value == default_values[this.id]) this.value = ''; 
    }); 
    $("#submit").click(function() { 
     var error_queue = new Array(); 
     var errMessage = 'Please fill out the following fields:\n + '; 
     $("input.inputStyle, textarea").each(function(i) { 
      if(!default_values[this.id]) { 
       default_values[this.id] = this.value; 
      } 
      if(this.value == '' || this.value == default_values[this.id]) 
       error_queue[error_queue.length] = default_values[this.id]; 
     }); 
     if(error_queue.length > 0) { 
      alert(errMessage + error_queue.join('\n + ')); 
      return false; 
     } 
    }); 
}); 
+0

Спасибо за это. Я все еще ищу, чтобы заставить этот pluggin работать, я всегда полагаю, что чем меньше кода/разметки, тем лучше – kalpaitch

0

Вы пробовали что-то вроде:

jQuery.validator.addMethod("deflt", function(value, element) { 
    return this.optional(element) || value == element.defaultValue; 
}, "You must enter a value"); 

"значение" должно быть только строковое значение из элемент, поэтому он не будет иметь свойство defaultValue, но «элемент» может иметь «defaultValue»