0

少しわかりにくい質問ですが、私の言いたいことが理解できると思います:

私のウェブサイトでは、以前の選択ボックスの値に基づいて更新される選択ボックスを実装しようとしています。そのために、値を取るJavaScriptを使用しています。たとえば、選択ボックスのオプションは次のようになります。

<option value="22"> Apple </option>

選択ボックスをフィルタリングするには値が必要ですが、PHP スクリプトでは「Apple」テキストを取得する必要があります。それを行う方法はありますか?

初心者の質問で申し訳ありませんが、Web 開発は私にとって新しいものです。

編集:

これは、2 番目の選択ボックスをフィルタリングするために使用している Java スクリプトです。

$("#select1").change(function() {
                           if ($(this).data('options') == undefined) {
                               /*Taking an array of all options-2 and kind of embedding it on the select1*/
                               $(this).data('options', $('#select2 option').clone());
                           }
                           var id = $(this).val();
                           var options = $(this).data('options').filter('[value=' + id + ']');
                           $('#select2').html(options);
                       });

フィルター関数でこの「値」を他の属性に変更しようとすると、何らかの理由で機能しません。私は JavaScript をまったく知りません。

4

5 に答える 5

1

これを試して

var pName = document.getElementById('selectname');

var name = pName.options[pName.selectedIndex].text;

非表示のフォーム フィールドまたは ajax リクエストによって名前の値を php スクリプトに送信します。オプションのテキストが含まれます。

于 2013-08-22T10:11:32.270 に答える
1

Appleサーバーに渡されず、この場合は値のみが渡されます23GETFormular メソッドをに変更すると、 のようになることがわかりますscript.php?some_select=23

それを解決するための2つのソリューション:

最初のもの (簡単なもの) は次のようになります。

<option value="Apple" data-filterid="22"> Apple </option>

そしてあなたのjsで:

var options = $(this).data('options').filter('[data-filterid=' + id + ']');

したがってApple、代わりに .php スクリプトを取得します22data-filterid次に、の代わりにアクセスすることにより、javascript でフィルター処理できますvalue

2番目の解決策は、値を数値にマップする連想辞書を保存することです。たとえば、次のようになります。

<?php
   $mapped = array(22 => "Apple",  23=>"Orange");
   $value = $mapped[$_GET['option_name']];
于 2013-08-22T10:11:41.653 に答える
1

果物_配列.php

<?php
$fruits= array(
22 => 'apple' ,
23 => 'orange'
);

form_handler.php

if( isset($_POST['chosen_fruit']) && (int)$_POST['chosen_fruit'] > 0 ){
include 'fruits_array.php';
echo you chose ' . $fruits[$_POST['chosen_fruit'];
}

pick_your_fruit.php

<form action='form_handler.php' method= POST>
<select name='chosen_fruit'>
<?php
include 'fruits_array.php';

foreach($fruits as $key=$fruit)
echo '<option value=' . $key . '>' . $fruit .'</option>' . PHP_EOL ; 
?>
<input type=submit />
</form>

これを試してみてください。果物の配列を 1 か所に維持します。必要なところに含めてください。必要に応じて、その配列はデータベースから取得できます。

配列を使用して

  1. フォーム要素を生成する
  2. メッセージを生成する

しかし、本質的には、フォームとフォーム ハンドラーの間でキーの番号を転送することで、受信データの検証に関する厄介な問題が軽減されます。

ドライ。繰り返さないでください。99 個の果物があり、別の果物を追加する場合、1 か所に追加するだけです。

(欠けている主なものは、存在しない果物番号の処理です。これは、おそらく誰かが入力フォームを改ざんしていることを意味します。それは別の質問に任せますか?)

于 2013-08-22T10:21:01.410 に答える
1

このようにしてみてください

<form method="post" action="getvalue.php">
    <select name="fruit">
        <option value="">select the option</option>
        <option value="1">Apple</option>
        <option value="2">Banana</option>
        <option value="3">Mango</option>
    </select>
</form>


<?php
$option = array('1'=>'Apple','2'=>'Banana','3'=>'Mango');
echo $option[$_POST['fruit']];

?>
于 2013-08-22T10:21:45.017 に答える