2011-06-07 16 views
2

私は、コード署名者のすべてのフォームと検証要件を作成する簡単なフォームを用意しています。私がしたいのは、フォームの入力とフォームの検証セットルールを作成しないように、シリアライゼーションの前に空の入力を除外することです。私はこれについてどうやって行かなければならないかについて迷っています。私が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/> 

をプリントアウトしないようにしようとしていますあなたに\ sのを使って正規表現式を使用する必要がありますお時間を

答えて

2

$('#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行のテンプレートを1つだけ使用してください。わかりました。再びみんなに感謝します – Brad

1

をありがとう検索クエリ。だから/ ^(\ 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

これは答えではなく、質問そのものに対するコメントであるべきだと思います。コメントにこの多くのコードをコヒーレントに投稿するのは難しいですが... –

+0

その答えが私の場合、彼はもっとデータを投稿するように頼んだのですが、私は努力を感謝します – Brad

1

は何valueが割り当てられていない持っている要素を非表示にするには:

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

しかし、もちろん、value="x"属性がhtmlに提供されていると、要素が表示されます。

関連する問題