2016-06-21 8 views
0

言い換える:PHPの変数がありJavaScriptを使用のonchangeフォームフィールドにDBからPHPの変数を比較し、表示/非表示スパンに応じ

: $アドレス

は、フォーム変数 メアド

があります

ユーザーがフォーム変数に入力した値がPHP変数と一致しない場合に表示するページ上のスパンがあります

たとえば、$ add RESS変数=「123 4 ST」アディフォームフィールドで

ユーザー・タイプ「132 4 ST」

アドレスが一致しないため、ユーザは、フィールド(テキスト入力)のうちクリックすると、 span id add_ckに「アドレスが一致しません」と表示されます。

しかし、ユーザーがaddyの内容を「123 4th St」に戻すと、span id add_ckには何も表示されません。

あなたはonchangeイベントで表示/非表示を行うことができますが、以前はドロップダウンを使っていました。しかし、スパンの表示/非表示のイベントをトリガーするために、php変数にテキスト項目 '変更'(フィールドの外側をクリックするか、または他のフィールドをクリックすることによって決定される)を比較することは、私が探しているものです。

<? 
$address = "123 4th St"; 
?> 
<html> 
<head> 
<script> 
var db_address = '<?php echo $address; ?>'; 
document.getElementById('address_field').addEventListener("change", function(){ 
compare_addresses(); 
}); 
var compare_addresses = function(){ 
var new_address = document.getElementById('address_field').value; 
var the_span = document.getElementById('add_ck'); 
if(db_address == new_address) 
{ 
//The addresses are equal. Show 'add_ck'. 
add_ck.style.display = 'block'; 
} 
else 
{ 
//The addresses are not equal. Hide'add_ck'. 
add_ck.style.display = 'none'; 
} 
} 
</script> 
</head> 
<body> 
<form name="form" method="POST" action=""> 
<input type="text" name="addy" id="address_field"> 
<input type="submit"> 
</form> 
<span id="add_ck">Testing</span> 
</body> 
</html> 
+0

___unclearあなたが尋ねていること___ – Rayon

+0

あなたはphpとmix javascriptが必要です。この方法では不可能です。 –

+0

あなたのロジックがどこにあるのか分かりにくいかもしれませんが、これらの言語を混在させることはあまりありません。 JavaScriptに入力とロジックを完全に処理させるか、PHPの状態に絶えずアクセスできるように分割する必要があります。 PHPは主にフォームの提出を求めています(イベント処理には使用できますが、JS/JQは単にその方法より優れています)。 「アクション」からPHPを起動できない場合は、JSですべてを実行する必要があります。 PHPのアクションは必ずしもページをリロードする必要はありません。 –

答えて

1

で提出された場合にのみ定義する必要があります。まず入力フィールドにはIDが必要です。

<input type="text" name="addy" id="address_field"> 

JS変数にPHPの値を入れて:我々はaddress_fieldそれを呼び出すとしましょう

var db_address = '<?php echo $address; ?>'; 

は、あなたのテキストボックスにイベントリスナーを追加します。compare_addresses機能で

document.getElementById('address_field').addEventListener("change", function(){ 
    compare_addresses(); 
}); 

を2つの文字列を比較します。

var compare_addresses = function(){ 
    var new_address = document.getElementById('address_field').value; 
    var the_span = document.getElementById('add_ck'); 
    if(db_address == new_address) 
    { 
     //The addresses are equal. Show 'add_ck'. 
     the_span.style.display = 'block'; 
    } 
    else 
    { 
     //The addresses are not equal. Hide'add_ck'. 
     the_span.style.display = 'none'; 
    } 
} 
+0

こんにちはedvinHolm - 上記の改訂コードを参照してください。 addyフィールドをクリックしてアドレスを$ address変数以外に変更すると、スパンに変更はありません。何があっても目に見えています。 – user6096423

+0

要素を作成した後にJavaScriptを実行する必要があります。言い換えれば、フォームの下に '

0

PHPはサーバー側とJavaScriptをので、クライアント側で、ここで未定義するVAR メアド縫い目である:

これは私がこれまでにしようとしているものです。 addy varはフォームがvar $ _POST ['addy']

関連する問題