2

HTML ファイルに text1 と text2 の 2 つの入力フィールドがあります。次に、長い文字列をコピーして text1 に貼り付けます。文字列を text1 と text2 に自動的に分割します。そのため、文字列には区切り文字 (TAB (ASCII 9) など) が必要です。私は何度も試してきましたが、運がありません。私の実験では、次のようにjavascript関数を呼び出すボタンがあります:

<script>
function Chr(AsciiNum)
{
return String.fromCharCode(AsciiNum)

}

function test()
{ 
  c = "ABC"+Chr(9)+"DEF";
  document.getElementById("text1").value=c;
}

</script>

<input type="button" value="Paste it" onClick="test()">

私が欲しいのは、ABCで満たされたtext1と「DEF」で満たされたtext2です

助けてくれてありがとう.....

4

2 に答える 2

3

分割は簡単です:

function test(pastedText) { 
  var parts = pastedText.split(Chr(9));

  document.getElementById("text1").value = parts[0];
  document.getElementById("text2").value =
                                        (parts[1] === undefined ? "" : parts[1]);
}

トリッキーな部分は、実際には貼り付けです。以下の完全なコードを確認してください。

コードのオンライン DEMO を参照してください

Text1: <input type="text" id="text1"><br />
Text2: <input type="text" id="text2"><br />
<br />
<div>Sample string (copy the red text and paste it on Text1):</div>
<div style="color:red">ABC  DEF</div>

<script>
    function Chr(AsciiNum) {
      return String.fromCharCode(AsciiNum)
    }

    function test(pastedText) { 
      var parts = pastedText.split(Chr(9));

      document.getElementById("text1").value = parts[0];
      document.getElementById("text2").value = (parts[1] === undefined ?
                                                              "" : parts[1]);
    }

    /** HANDLING PASTE EVENT
     *  Credits to: http://stackoverflow.com/a/6035265/1850609 */
    function handlePaste(e) { 
      var pastedText = undefined;
      if (window.clipboardData && window.clipboardData.getData) { // IE
        pastedText = window.clipboardData.getData('Text');
      } else if (e.clipboardData && e.clipboardData.getData) {
        pastedText = e.clipboardData.getData('text/plain');
      }
      test(pastedText); // Process and handle text...
      return false; // Prevent the default handler from running.
    };
    document.getElementById("text1").onpaste = handlePaste;
</script>

test()また、関数の名前をより意味のあるものに変更することをお勧めします。

于 2013-08-03T05:38:11.200 に答える
1

なぜあなたはそのようにしないのですか:

 c = "ABC "+Chr(9);
 document.getElementById("text1").value=c;
 document.getElementById("text2").value= "DEF";

これは内側にあるはずですtest()

お役に立てれば。

于 2013-08-03T05:19:25.927 に答える