1

次のシナリオがあります-

ユーザーは画像をクリックして、特定のブランドの車両を検索します。その画像の値は、別のフォームに返された値を投稿する隠しボックスに移動する必要があります。返される値を取得できないようです...

私のコード...

<form action="searchbrand.php" method="POST" name="frmbrand">
 <!--First row of logos...-->   
 <table class="whitelogo">
  <tr>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Alfa Romeo" src="images/carlogos/alfa.jpg" height="55px" width="55px" title="View our Alfa Romeo Selection" alt="Alfa Romeo" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Aston Martin" src="images/carlogos/aston.jpg" height="55px" width="55px" title="View our Aston Martin Selection" alt="Aston Martin" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Audi" src="images/carlogos/audi.gif" height="55px" width="55px" title="View our Audi Selection" alt="Audi" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Bentley" src="images/carlogos/bentley.jpg" height="55px" width="55px" title="View our Bentley Selection" alt="Bentley" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="BMW" src="images/carlogos/bmw.gif" height="55px" width="55px" title="View our BMW Selection" alt="BMW" onClick="javascript:document.submitForm.submit();" />
    </td>
    <td align="center">
        <p style="height:5px"></p>
        <input type="image" name="brand" id="brand" value="Cadillac" src="images/carlogos/cadillac.jpg" height="55px" width="55px" title="View our Cadillac Selection" alt="Cadillac" onClick="javascript:document.submitForm.submit();" />
    </td>
 </tr>
</table>

ここで気付くと思いますが、画像にはすべて「ブランド」という名前を付け、それぞれに個別の値を付けました。

 <input type="hidden" name="hidbrand" value="<?=$_POST['brand'];?>"/>
 </form>

ユーザーがクリックした画像からここで値を取得しようとしています...

私のsearchbrand.phpページでは、返された値に従って処理を行います.

 <?php
 include 'init.php';
 $vehicle_brand = $_POST['hidbrand'];
 echo $vehicle_brand, '</br>';
 ?>

何も返されず、エラーも値もありません。私のようにすべて空白です:)誰でも私がどこで大騒ぎしているのか知っていますか?

4

4 に答える 4

6

hidbrandから削除<?=$_POST['brand']?>し、すべての画像入力タイプのonClickを次のように置き換えます。

javascript:document.forms['frmbrand'].hidbrand.value = this.value;

これにより、非表示の要素にユーザーがクリックした画像の値が入力され、フォームが自動的に送信されます。

現在onClickで使用している(フォームの送信)現在のJavaScriptは重要ではなく、画像入力タイプがクリックされると自動的にフォームを送信するため、必要ありません。

于 2012-11-07T15:59:07.670 に答える
3

画像に異なるIDを付けてください。1ページでフォーム要素の名前を同じにすることができますが、IDは各フォーム要素に固有である必要があります。複数の要素に同じ名前を付けると、配列がpost値として返されます。次のようなjqueryを使用して値を取得できます

    $('input[name="brand"]').onclick(function(){alert($(this).attr('alt'));}

これにより、ユーザーがクリックした画像のalt属性が警告されます。

var_dump()を使用 して、$_POSTの内容を確認してください。

var_dump($_POST);

フォームを使用してフォームを送信すると、input type="image">

これは次のような配列を返します

array 'brand_x' => string '0' (length=1) 'brand_y' => string '0' (length=1)'

$_POST[brand_x]2番目のフォームの値を取得するために使用できるように

于 2012-11-07T15:23:25.720 に答える
1

画像入力をクリックすると、フォームが送信されるため、hidinput の値が設定される前に送信される可能性があります。

$_POST - IIRC に含まれるものを見てください。画像上でクリックされた x と y の位置に対応する値が送信されます。これを使用して、Javascript を実行しなくても、どの画像がクリックされたかを知ることができます。

于 2012-11-07T15:17:51.280 に答える
1

私があなたを正しく理解している場合、これは例になるはずです:

<!doctype html>
<html><head></head>
<body>
    <form action="searchbrand.php" method="POST"
        name="frmbrand" onsubmit="return false;">
        <input type="image" name="brand" id="brand" value="Alfa Romeo" 
            src="images/carlogos/alfa.jpg" height="55px" width="55px" 
            title="View our Alfa Romeo Selection" alt="Alfa Romeo" 
            onClick="document.submitForm.hidbrand.value=this.value; document.submitForm.submit();" />
    </form>
    <form action="http://www.stackoverflow.com/" method="POST" name="submitForm">
        <input type="text" name="hidbrand" value="" />
    </form>
</body>
</html>

まず、画像を含むフォームの送信をキャンセルします。

... onsubmit="return false;" ...

次に、 submitFormの非表示フィールドに値をコピーしてから送信します (私の例では、デバッグ目的でhidbrandフィールドを非表示にしませんでした)。

... onClick="document.submitForm.hidbrand.value=this.value; document.submitForm.submit();" ...

最初のフォームは送信されるべきではないため、実際にはフォームである必要はありません。onclickハンドラでプレーン イメージを使用できます。

于 2012-11-07T15:24:05.753 に答える