2016-05-20 24 views
0

追加ボタンをクリックすると、新しいテキストボックスとラジオボタンを追加するために、以下のコードをhtmlに追加するためのコードを使用しています。追加されたテキストボックスの名前は、入力データと、入力データを異なるクエリに使用するときに異なる変数に区別するための追加番号(クリック数)です。この入力(数値は入力)をラジオボタンで使用して、ラジオボタンがチェックされているかどうかに基づいて、指定した数値の上または下の特定のデータを照会するかどうかを決定します。jQuery内のラジオボタンのPHP IF文のチェック

<input id="btnAdd" type="button" value="Add" /> 
<br /> 
<div id="TextBoxContainer"> 
</div> 
<br /> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     var click_number = 0; 
     $("#btnAdd").bind("click", function() { 
      var input = $("<label>input &nbsp;<textarea rows='1' name='input_"+ click_number +"'><?php echo $_POST['input_"+ click_number +"']; ?></textarea></label>&nbsp;"); 
      var above_below = $("<input type='radio' name='abovebelow_"+ click_number +"' id='above_"+ click_number +"' value='Above' <?php if(isset($_POST['abovebelow_"+ click_number +"']) && $_POST['abovebelow_"+ click_number +"'] == 'Above') echo \"checked='checked'\"; ?>><label for='above_"+ click_number +"'>Above</label><input type='radio' name='abovebelow_"+ click_number +"' id='below_"+ click_number +"' value='Below' <?php if(isset($_POST['abovebelow_"+ click_number +"']) && $_POST['abovebelow_"+ click_number +"'] == 'Below') echo \"checked='checked'\"; ?>><label for='below_"+ click_number +"'>Below</label><br/>&nbsp;"); 
      hgcBio.appendTo('#TextBoxContainer'); 
      above_below.appendTo('#TextBoxContainer'); 
      click_number++; 
}); 
</script> 

現在、htmlはjQueryで使用していないときに機能しますが、このjQuery形式ではラジオボタンが機能しません。私はこの部分を削除したときに、私はもはや、エラーメッセージが出ないので

<?php if(isset($_POST['abovebelow_"+ click_number +"']) && $_POST['abovebelow_"+ click_number +"'] == 'Above') echo \"checked='checked'\"; ?> 

:私は上記の中/変数の下にあるPHPコードまでの誤りを縮小しています。エラーメッセージは、 "解析エラー:解析エラーです。識別子(T_STRING)" '"がその行にあります。私はjQuery(入力変数)の他の部分でPHPを使用しているので、私は問題がif文であると推測していますか?ここでif文を使用する別の方法はありますか?これを行う別の方法がありますか?

+0

if文の文字列の一部が正しくフォーマットされていないようです。 click_numberはphp変数になっていますか?なぜエコーバックスラッシュ後の最初の文字ですか? – Shovalt

+0

jQuery変数はありません。バックスラッシュは引用符をエスケープすることです。私はちょうどそこに単一引用符を使用することができたかもしれないが、それは私の部分の可視性の理由のために多くだった。 – Steven

+0

JavascriptにPHPのデータを取り込みたい場合は、PHP側でjqueryの '$ .ajax()'メソッドと 'json_encode()'メソッドを調べてください。私はそれが後で道路の上で_多くの問題を引き起こす可能性があるので、特にこの方法をお勧めしません。 – Jhecht

答えて

1

はそれはのような単純な

<?php 
    if(isset($_POST['abovebelow_". click_number ."']) 
     && $_POST['abovebelow_". click_number ."'] == 'Above') 
     echo "\"checked='checked'\""; 
?> 

(つまり、あなたが印刷された文字列の前後にダブルクォートを忘れてしまった。また、文字列の連結は、PHPで.ない+を使用する必要があります、コメントで述べたように)

です
+0

これはエラーを修正すると信じていますが、POST括弧内には少し奇妙なことがあります。ドットはすべて一重引用符で囲まれていません。たとえそうでなくても、PHPの変数は$で始まります。私はここにいくつかのミックスがあると思いますが、私が言ったように、質問に記載されているエラーはあなたの変更で修正する必要があります。 – Shovalt

+0

ええ、私は忘れました。文字列を連結しますが、二重引用符は正しくありません。 (エスケープされた二重引用符はすでにエコーされた文字列をカバーするためにすでに存在しています)。それを試して確認され、それは全体の声明の大部分を引用符で囲まれていません。 – Steven

+0

編集:私はあなたが言ったことを誤解しているのを見て、エスケープされた引用符がエスケープされていない引用符の中になければならないことを忘れていました。私は別の引用符を追加することを意味すると考えていたので、なぜそれがうまくいかなかったのですか?ありがとう! – Steven