0

tableプレーンテキスト文字だけでなくradio buttonslists、 などを含む行を持つ HTML要素があります。

私がしたいのは、ユーザーがテーブルの内容を MS Excel に (プレーン テキストとして) コピー アンド ペーストしたときに、radio buttonsそれらの値 (例: "checked" および "unchecked") に置き換え、要素をリストすることです。選択した値などに置き換える必要があります。

これをブラウザに実装する方法はありますか?(できれば、フラッシュまたは Java アプレット コンポーネントを使用しないでください)

ありがとう、クリシー

4

2 に答える 2

2

javascript(jqueryのようなフレームワークを使用すると簡単になります)を使用して、コピーされたコードを変更できます。一般的な手順は、ラジオボタンを非表示に設定し、現在の値に基づいてその場所にテキストを追加することです。

実装の詳細に役立つ質問がたくさんあります:https ://stackoverflow.com/search?q =%5Bjavascript%5D + copyed + text&submit = search

更新:少なくとも私のバージョンのExcelでは、ラジオボタンを削除する必要さえないことがわかりました。これが実際の例です(何が起こっているのかを説明するためにコメントが多すぎます):

<!DOCTYPE html>
<html>
  <head>
    <style type='text/css'>
      .radioCopyVal{
      font-size: 0;
      }
    </style>
  </head>
  <body>
    <form>
      <table>
    <tr>
      <td><input type='radio' name='woots' id='oneWoot' checked/><span class='radioCopyVal'>Checked.</span></td>
      <td><label for='oneWoot'>Woot.</label></td>
    </tr>
    <tr>
      <td><input type='radio' name='woots' id='twoWoot' /><span class='radioCopyVal'>Not checked.</span></td>
      <td><label for='twoWoot'>Woot. Woot.</label></td>
    </tr>
      </table>
    </form>
    <script src="jquery-1.7.2.min.js"></script>
    <script type='text/javascript'>
      $("#oneWoot").attr("checked", true); //on page load, make sure oneWoot is the default selection

      $("input[name=woots]:radio").change(function(){ //anytime the radio buttons of name woots are changed...
          $(".radioCopyVal").remove(); //remove the old radioCopyVal spans (to be replaced with new ones)
          $("input[name=woots]:radio").each(function() { //for each radio button in name woots
              if ($(this).attr("checked")) { //if the button is checked, add a span saying 'Checked.' after it. css is used to hide the span
                  $(this).after('<span class="radioCopyVal">Checked.</span>');
          }else {
              $(this).after('<span class="radioCopyVal">Not checked.</span>');
          }
          })
      });
    </script>
  </body>
</html>
于 2012-09-04T07:27:45.700 に答える
1

ありえないですよね。しかし、次のようにすることもできます: JavaScript につながるリンクを用意すると、スクリプトはこれらのアイテムを非表示にし、それらの値をプレーン テキストで表示するので、この操作を元に戻すことができます。

これは、JQuery を使用して簡単に実行できます。これは、ラジオの値を示しています。

$("input:radio").each(function() {
    if ($(this).attr("checked")) {
        $(this).after('<span class="value">checked</span>');
    }
    else {
        $(this).after('<span class="value">unchecked</span>');
    }
}).css("display", "none");

スクリプトを使用してこれらの値を簡単に非表示にできるように、スパン クラスを残しました。

于 2012-09-04T07:39:41.640 に答える