2013-03-20 4 views
0

http://jsfiddle.net/3vHxF/ Вот что я пыталсяВозвращает пустое имя поля из формы проверки

И мой HTML код:

<form id="commentForm" style="width:200px;" name="MYFORM" action="#"> 
        <label> 
        <strong>Enquiry Form </strong> 
        </label> 
        <label>Name</label> 
        <input id="name" type="text" size="30" name="name"> 
        <label>Phone No</label> 
        <input id="phone" type="text" size="30" name="phone"> 
        <label>Email</label> 
        <input id="email" type="text"size="30" name="email"> 
        <label>Message</label><br> 
        <textarea id="message" name="message"></textarea> 
        <input id="Send" type="submit" value="Send" onclick="send()"> 
        </form> 

Javascript is : 

var name=getElementById('name'); 
var phone=getElementById('phone'); 
var email=getElementById('email'); 
var mess=getElementById('message'); 

function send(){ 

if(name==null&&phone==null&&email==null&&mess==null) 
    alert('field is empty'); 
} 

Я хочу, чтобы предупредить поле, которое пусто, и в то же время я хотите написать это просто. Пожалуйста, не предлагайте никаких плагинов.

+0

За то, что вы должны проверить каждое поле ввода. –

+0

@RajInevitable это не то, что я хочу .. я не знаю, как ??? так что только я отправил здесь брата – saikiran

+0

Изменить getElementById на document.getElementById – Colandus

ответ

0

Вы можете использовать следующую JQuery:

$(":text,textarea").each(function() { 
    $(this).css("outline", $(this).val() ? "1px solid red" : "none"); 
}); 

Извините, я думал, что "нет плагинов" не означает "нет плагинов JQuery." (Вы могли бы назвать JQuery библиотеку или зависимость, а не "плагин")

Это в основном не тестировалась без JQuery версии:

function highlightMissingInputs() { 
    for (var formIndex = 0; formIndex < document.forms.length; formIndex++) { 
     var form = document.forms[formIndex]; 
     for (var inputIndex = 0; inputIndex < form.length; inputIndex++) { 
      var input = form[inputIndex]; 
      switch (input.tagName) { 
       case "INPUT": 
        var typeAttribute = input.attributes.type; 
        if (typeAttribute) { 
         var type = (typeAttribute.value || "").toLowerCase(); 
         switch (type) { 
          case undefined: 
          case "": 
          case "text": 
          case "email": 
          case "tel": 
          case "email": 
          case "search": 
           break; 
          default: 
           continue; 
         } 
        } 
        break; 
       case "TEXTAREA": 
        break; 
       default: 
        continue; 
      } 

      input.style.outline = input.value ? "none" : "1px solid red"; 
     } 
    } 
} 
+1

он сказал, что нет плагинов – sircapsalot

+0

Я хочу делать только в javascript .. @Joseph Lennox – saikiran

+1

jQuery * is * JavaScript, это только что написал кто-то еще. (Есть много причин, чтобы хотеть избежать этого, но не отрицайте, что это JS). – Quentin

2

Ваши проблемы:

  • Вы тестируете HTMLInputElement (так что получите значение)
  • Вы сравниваете строки с null (по сравнению с пустой строкой)
  • Ваш fai состояние приманки на основе все из них неудачи вместо любого из них неудачи (используйте или не и)

Такой:

if(name.value === "" || phone.value === "" || email.value === "" || mess.value === "") 
    alert('field is empty'); 
} 

Чтобы определить какой один пусто, вам нужно протестировать их по одному, а не в одном документе if с ||.

+1

Очень хорошо сказано, однако это не решает его актуальный вопрос: «Я хочу предупредить поле, которое пусто». Ваше решение только предупреждает, что «поле пусто», независимо от того, что пусто. – sircapsalot

+0

@Quentin здесь не работает: http: //jsfiddle.net/3vHxF/4/ – saikiran

+0

Вероятно, это просто ошибка области на стороне jsfiddle ... Попробуйте по своему сценарию (и обновите getElementById до document.getElementById) – Colandus

1

Непонятный подход. Но попробуйте разработать код ниже.

var name=document.getElementById('name').value; 
var phone=document.getElementById('phone').value; 
var email=document.getElementById('email').value; 
var mess=document.getElementById('message').value; 

function send(){ 

if(isEmpty(name, 'name') || isEmpty(phone, 'phone') || isEmpty(email, 'email') || isEmpty(mess, 'message')) { 
    return false; 
    } 
    return true; 
} 

function isEmpty(val, fld) { 
    if(val && val != null) { 
     return true; 
    } 
    alert(fld +" is Empty"); 
    return false; 
} 
2

Удалите обработчик щелчка от кнопки и поставить представить обработчик на форме:

<form id="commentForm" onsubmit="return validat(this);" ... > 

Теперь вы можете сделать простую проверку:

function validate(form) { 
    var control; 
    var isValid = true; 

    for (var i=0, iLen=form.elements.length; i<iLen; i++) { 
    control = form.elements[i]; 

    if (control.value == '') { 
     alert('Field ' + control.name + ' is empty'); 
     isValid = false; 
    } 
    } 
    return isValid; // false cancels submit 
} 

Это очень минимален скрипт проверки подлинности, но это начало.

Кстати, поскольку ваши элементы управления формой имеют имена (которые должны быть успешными), им не нужны идентификаторы.

+0

Это не работает, я пробовал здесь: http: //jsfiddle.net/3vHxF/10/ – saikiran

+0

Конечно, нет, вы удалили форму. – RobG

+0

Можете ли вы показать мне в fiddle mate .. – saikiran

1

изменение

var name=getElementById('name'); 
var phone=getElementById('phone'); 
var email=getElementById('email'); 
var mess=getElementById('message'); 

в

var name=document.getElementById('name').value; 
var phone=document.getElementById('phone').value; 
var email=document.getElementById('email').value; 
var mess=document.getElementById('message').value; 

, а затем использовать

if(name.value === "" || phone.value === "" || email.value === "" || mess.value === "") 
    alert('field is empty'); 
} 
+0

@saikiran вам нужно использовать var name = document.getElementById ('name'). Value; – PSR

+0

жаль, что я забыл его при вставке – saikiran

+0

@saikiran, который вы говорите – PSR

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