2011-07-26 7 views
0

誰でもこのコードで間違ったことを教えてもらえますか、誰かが提出する前にすべてのフィールドにテキストが入っていることを確認してフォームを検証していますか?すべては私が!='' var.に入れるまで...私は問題のthatsかどうかを確認することができますので、フォームの検証!= '' in if文?

<script src="jquery.js" type="text/javascript" language="javascript"></script> 
<script language="javascript"> 


$(document).ready(function() { 

// declare the flags outside the other functions 

var username_ready = false; 
var email_ready = false; 




function checkSubmitStatus() { 
var emailvalue = $("#email").val(); 
var usernamevalue = $('#username').val(); 
var firstvalue = $('#first').val(); 
var lastvalue = $('#last').val(); 
var passwordvalue = $('#password').val(); 
if (username_ready && email_ready && emailvalue!='' && usernamevalue!='' && firstvalue!='' && lastvalue!='' && passwordvalue!=''){ 

    $("#register").prop('disabled',false); 
} 
else {$("#register").prop('disabled',true);} 
} 

、ここでは私のフォームコードでのidのが正しいと確信して動作します

<p>First Name: <input id="first" type="text" name="name" maxlength="100"> </p> 
<p>Last Name: <input id="last" type="text" name="name" maxlength="100"> </p> 
<p> Email: <input type="text" name="email" id="email" maxlength="100" /> 
<span id="box" style="display:none"></span></p> 
User Name : <input name="username" type="text" id="username" value="" maxlength="15" /> 
<span id="msgbox" style="display:none"></span> 
<p> Password: <input id="password" type="password" name="password"> </p> 

+5

username_readyとemail_readyをtrueに設定した部分が欠落していました。 – Brain2000

+1

だから、それは何をしますか? – deceze

+0

thats partは私自身が動作することを知っているものです。ユーザー名や電子メールがすでに存在するかどうかを確認するajaxと、そうでなければfalseを設定します。 Falseは送信ボタンを非アクティブにし、trueをアクティブにします。そうすれば文がそれを活性化するはずです。 – Osman

答えて

4

変数名firstvalueのスペルが間違っています:

firstvale!='' 

編集

移動これら5行:彼らはfunction checkSubmitStatus(){の下に右にどこからとあなたの大切なif文上記

var emailvalue = $("#email").val(); 
var usernamevalue = $('#username').val(); 
var firstvalue = $('#first').val(); 
var lastvalue = $('#last').val(); 
var passwordvalue = $('#password').val(); 

ここでは、ページが最初に読み込まれたときにフォームの値に1回だけ割り当てられますが、少なくとも1つは空であると仮定しています。

これらの行をcheckSubmitStatus()関数に移動して、関数が呼び出されるたびに更新されるようにする必要があります。最終結果は次のようになります。

var username_ready = false; 
var email_ready = false; 

function checkSubmitStatus() { 

    var emailvalue = $("#email").val(); 
    var usernamevalue = $('#username').val(); 
    var firstvalue = $('#first').val(); 
    var lastvalue = $('#last').val(); 
    var passwordvalue = $('#password').val(); 


    if (username_ready && email_ready && 
     emailvalue!='' && usernamevalue!='' && 
     firstvalue!='' && lastvalue!='' && passwordvalue!=''){ 

     $("#register").prop('disabled',false); 
    } else { 
     $("#register").prop('disabled',true); 
    } 
} 
+0

haha​​、それは問題ではありませんでした。異なる部分を1つずつ取り除くことでトラブルシューティングを試みましたが、username_ready && email_readyがif文の唯一の部分である場合にのみ動作します。だから私のコードのvarまたは!= ''部分に何か問題がありますか? – Osman

+0

@ user860869ここであなたの関数 'checkSubmitStatus()'をどこから呼び出しますか?その時までに '$( '#email').val()'などの値が変更された可能性があります。あなたの 'var emailvalue = $("#email ")val();'とその下にある4つの同様の行を関数の先頭に移動してみてください。 – Paulpro

+0

彼らは始めにあります...最初のものとその名前で定義された他のvarは今までにないです。 – Osman

0

コードから判断すると、コードの異なる部分からコピー貼り付けされていると感じます。何が起きているのかは、checkSubmitStatusが呼び出されたときにemailvalue,usernamevalueなどが実際に範囲外になっていることです。私も間違っているかもしれませんが、大丈夫と思われるので、提供されたコードに基づいて詳細を伝えるのは難しいです。

if文の前にalert(emailvalue);を入力して、undefinedまたは何らかの値が得られるかどうかを確認できます。定義されていない場合は、おそらくスコープに問題があります。

上記のコードから、実際に何かが入力されるか、フォームが送信される前に、これらの変数の値が割り当てられているようです。

+0

omg thats右あなたの男は素晴らしい私は私がそれを見ていないと信じていない。 – Osman

+0

私はそれが機能する前に定義されたvarを動作させました!私の悪い。 – Osman