0

メッセージシステムにJavascriptコードを追加しました。このJSコードは、ユーザーが送信ボタンをクリックすると、テキストエリアにBBCodeの行を追加します。

BBCodeはFirefoxとSafariの両方で正常に挿入されます。ただし、メッセージはFirefoxでのみ送信されます。Safariで投稿する場合、データベースには移動しません。私はこれらの2つのブラウザでこれをテストしただけで、他のブラウザでは壊れている可能性があります。

コードは次のとおりです。

<!-- Start javascript code for message type -->
<script>
    var messageType = {
        General: "[b][green]General[/green]:[/b]",
        News: "[b][blue]News[/blue]:[/b]",
        Trend: "[b][orange]Trend[/orange]:[/b]",
        Help: "[b][red]Help[/red]:[/b]"
    };

    function submitForm(){
        msgSelText = messageType [document.getElementById('messageSelection').value]
        document.getElementById('wpam_nm_text').value = msgSelText + ' ' +document.getElementById('wpam_nm_text').value;
        document.getElementById('new_post_form').submit();
    }
</script>
<!-- End javascript code for message type -->

<form name="new_post" method="post" action="admin.php?page=wp-admin-microblog/wp-admin-microblog.php" id="new_post_form">
    <table class="widefat">
        <thead>

        <tr>
            <td>
                <div id="postdiv" class="postarea" style="display:block;">
                    <textarea name="wpam_nm_text" id="wpam_nm_text" style="width:100%;" rows="4"></textarea>
                </div>
                Type of message:
                <select id="messageSelection">
                    <option>General</option>
                    <option>News</option>
                    <option>Trend</option>
                    <option>Help</option>
                </select>

                <p style="text-align:right; float:right;"><input name="send" type="submit" class="button-primary" value="<?php _e('Send', 'wp_admin_blog'); ?>" onclick="submitForm()" />
            </td>
        </tr>
        </thead>
    </table>
</form>

Javascriptコードを削除すると、Safariでフォームが正常に機能しました。これは、どういうわけか、JSコードがそれを機能させていないことを意味します-なぜですか?そして、どうすれば修正できますか?

4

2 に答える 2

1

Safariで、次のFiddleを実行すると、参照エラーが発生します:http: //jsfiddle.net/esCPN/1/

onclickjavascriptの偶数をトリガーするために使用する場合(これは使用しないでください)、javascript:構文を使用する必要があります。

<input name="send" type="submit" class="button-primary" value="Send"
    onclick="javascript:submitForm()" />

これにより、Safariがスローしている参照エラーがすべて停止します。

于 2012-10-16T18:47:14.450 に答える
1

javascriptコードを完全に書き直すことで、見捨てられた問題を解決しました。両方のブラウザーで正常に動作するようになりました。元のアプローチの何が問題だったのかわかりません。ブラウザのバグであることが完全に不可能というわけではありません。

新しいアプローチは次のとおりです。

<!-- Start javascript code for message type -->
<script type="text/javascript">
function setText(){
  var messageType = document.getElementById('messageType');
   var feed = document.getElementById('feed');
    feed.value= messageType.value + " "  +
    feed.value;
    }
</script>
<!-- End javascript code for message type -->

<form name="new_post" method="post" action="admin.php?page=wp-admin-microblog/wp-admin-microblog.php" id="new_post_form">
    <table class="widefat">
        <thead>
        <tr>
            <th><?php _e('Your Message', 'wp_admin_blog');?><a name="newpost"></a></th>
        </tr>
        <tr>
            <td>
                <div id="postdiv" class="postarea" style="display:block;">
                    <textarea name="wpam_nm_text" id="feed" style="width:100%;" rows="4"></textarea>
                </div>
                Type of message:

                 <select id="messageType" style="width:100px; height:20px; text-align:center;">
                     <option value="[b][green]General[/green]:[/b]">General</option>
                     <option value="[b][blue]News[/blue]:[/b]">News</option>
                     <option value="[b][orange]Trend[/orange]:[/b]">Trend</option>
                     <option value="[b][red]Help[/red]:[/b]">Help</option>
                </select>

                <p style="text-align:right; float:right;"><input name="send" type="submit" class="button-primary" value="<?php _e('Send', 'wp_admin_blog'); ?>" onclick="javascript:setText()" /></p>

            </td>
        </tr>
        </thead>
    </table>
</form>
于 2012-10-16T20:49:04.020 に答える