2011-06-07 11 views
2

У меня есть простая форма, которая позволяет создать все требования к форме и валидации для codeigniter. То, что я хочу сделать, это отфильтровать любые пустые входные данные перед сериализацией, чтобы я не создавал входные данные форм и формы правил проверки правильности. Я не понимаю, как это сделать. Там, где у меня есть предупреждение в JQuery, я хочу удалить любые пустые входы (снова до сериализации). В этот момент то, что я использую, не обнаруживает пустые поля формы. Без кода обнаружения вся система работает нормально. Вот что я используюУдаление пустых элементов ввода из формы

<h1>Field Name</h1> 
    <form action="Form.php" onsubmit="return false;" id="form" method="post"> 
    <input type="text" name="v1" id="v1" /> 
    <input type="text" name="v2" id="v2" /> 
    <input type="text" name="v3" id="v3" /> 
    <input type="text" name="v4" id="v4" /> 
    <input type="text" name="v5" id="v5" /> 
    <input type="text" name="v6" id="v6" /> 

<input type="submit" name="send" id="send" value="Send" /> 
     </form> 
<hr /> 
<script> 
$(function(){ 
$('#send').click(function(){ 
--------------------------------------- 
    $(":input").each(function() { 
    if($(this).val() === "") 
    alert("Empty Fields!!"); //using alert just to see if empty fields are detected. 
    return false; 
}); 
----------------------------------------- 
var data = $('#form').serialize(); 
    $.ajax({ 
     type: "POST", 
     data: data, 
     url: "Form.php", 
     success: function(msg){ 
      if(msg){ 
       $('#display').html(msg).show(); 
      }else{ 
       $('#display').text("<p>nothing came back</p>"); 
      } 
     }  
    }); 
return false;  
}); 
}); 

Я просто пытаюсь избежать распечатывания пустых полей формы

<p> 
<label for=""></label> <br /> 
<input type="text" name="" id="" /> <br /> 
<label class="error" id=""> This field is required</label> <br /> 
<p/> 

Спасибо за ваше время

ответ

2

Это удалит все текстовые поля, которые имеют значение длины 0:

$('#send').click(function(){ 
$(':input[type="text"]').filter(function(e){ 
    if (this.value.length===0){ 
     return true; 
    } 
}).remove(); 
    }); 

пример: http://jsfiddle.net/niklasvh/ZBSyX/

+0

, он удаляет элементы, которые пусты, как следует, теперь мне просто нужно выяснить, что делать с (не показано здесь) $ v1 = $ _post ['v1'], который теперь выдает ошибку :) спасибо! – Brad

+0

'if (isset ($ _ POST ['v1'])) {$ v1 = $ _POST ['v1']; } ', и если вы намереваетесь сделать это 9 раз, то, конечно, поместите его в цикл for. – Niklas

+0

Да и просто используйте один шаблон из 3 строк для всех. Я понимаю. Еще раз спасибо всем – Brad

1

Вы должны использовать регулярное выражение с помощью \ S, как поисковый запрос. Итак,/^ (\ s) * $/как регулярное выражение и просто убедитесь, что вход не соответствует этому.

Извините, но я не знаком с JQuery, иначе я бы точно написал код.

+0

jQuery не работает таким образом; вы не можете поместить регулярное выражение в селектор [(не из коробки, так или иначе)] (http://james.padolsey.com/javascript/regex-selector-for-jquery/). –

1
$('#send').click(function(){ 
//--------------------------------------- 
    $(":input").each(function() { 
    if($(this).val() === "") 
    alert("Empty Fields!!"); //using alert just to see if empty fields are detected. 
    return false; 
}); 

И вы не получите сообщение об ошибке? Первая область лямбда не закрыта.

Используйте Firebug, чтобы выделить ошибки, которые вы могли бы получить, и опубликовать их.

+0

Это должно, я думаю, быть комментарием самого вопроса, а не ответа. Хотя это трудно когерентно опубликовать этот код в комментарии ... –

+0

Его хорошо со мной, если его ответ, он попросил меня опубликовать больше данных, я ценю усилие – Brad

1

Чтобы скрыть элементы, которые не имеют value не назначены:

$('input:text[value=""]').hide(); 

Но , конечно, если в html указан атрибут value="x", это приведет к отображению элемента.

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