0

奇妙に思えるかもしれませんが、スクリプトの一部が次のようになっています... php が jQuery 関数へのアクセスを制御しています。ここに冗長なコードがあるかもしれないという事実を許してください。しかし、ここで主な問題を説明させてください。

以下は、php のコードの抜粋です。

<?php
        if($user_info['ACTIVE'] == 'Y')
            {
                require("jQuery/main_function.js");
                require("edit_profile.php");
            }elseif(!isset($_GET['resend']))
            {
                echo '<div id="profile_info"><p>In order to modify or setup your seller profile your account must be activated.<br />
                Check your email; if you did not receive an email, <a href="profile.php?resend">Click here</a> to have another one dispatched.</p>';
                echo '<p>You can however complete your contact information <a href="user_contact.php">here</a>';
            }

PHPコードでわかるように、ユーザーがアクティブである場合、データベース呼び出しから判断すると、htmlでmain_function.jsが必要になるため、これを削除します:

<script type="text/javascript">
function option_click(elementId)
    {
        $(document).ready(function(){
            alert('testing1');
            var defaultString = "Upload";
            var elementNum = elementId.substr(elementId.length-1, 1);
            switch($('#'+elementId).val())
            {
                case 'Video':
                {
                    alert('testing in chrome');
                    $('.set_time'+elementNum).prop('type', 'hidden');
                    $('.product_upload'+elementNum).prop('type', 'file');
                    $('.content_upload'+elementNum).html(defaultString + ' a ' + 'video file:');
                    break;  
                }
                case 'Time':
                {
                    $('.content_upload'+elementNum).html('How much time?');
                    $('.product_upload'+elementNum).prop('type', 'hidden');
                    $('.set_time'+elementNum).prop('type', 'text');
                    break;
                }
                case 'Music/Audio':
                {
                    $('.set_time'+elementNum).prop('type', 'hidden');
                    $('.product_upload'+elementNum).prop('type', 'file');
                    $('.content_upload'+elementNum).html(defaultString + ' a ' + 'music file');
                    break;
                }
                case 'Ebook':
                {
                    $('.set_time'+elementNum).prop('type', 'hidden');
                    $('.product_upload'+elementNum).prop('type', 'file');
                    $('.content_upload'+elementNum).html(defaultString + ' an ' + 'ebook file');
                    break;  
                }
                case 'Tutorial/Docs':
                {
                    $('.set_time'+elementNum).prop('type', 'hidden');
                    $('.product_upload'+elementNum).prop('type', 'file');
                    $('.content_upload'+elementNum).html(defaultString + ' a ' + 'tutorial file');  
                    break;
                }
            }
        });
    }
</script>

私のコードの途中で...

Google Chrome 以外のすべてのブラウザで正常に動作しますか? なんで?

4

1 に答える 1

0

次のようにオプションの値を切り替えています

switch($('#'+elementId).val())

しかし、あなたの要素(オプション)では、割り当てられたものはありませんでしたvalue(あなたが提供したコメントから)

<option id="video0" onclick="option_click(this.id)">Video</option>

アップデート:

あなたのアプローチ(Chromeでは機能しません)

<select>
   <optgroup label="Swedish Cars">
       <option id="volvo" onclick="option_click(this.id)">Volvo</option>
       <option id="saab" onclick="option_click(this.id)">Saab</option>
   </optgroup>

デモ

適切な方法 (すべてのブラウザで動作)

<select onchange="option_click(this.value)">
    <optgroup label="Swedish Cars">
        <option value="volvo" id="volvo">Volvo</option>
        <option value="saab" id="saab">Saab</option>
    </optgroup>
</select>

デモ

ここにswitchステートメントを使用した例

于 2012-09-06T01:35:07.610 に答える