2012-01-25 5 views
0

Javascriptを使用したPHPフォームを使用した非常に簡単なアプリケーションを作成しました。MS Excelのコピー貼り付けはIEで失敗しますが、Firefoxで動作します

私のフォームには、データベース検索の実行に使用したテキスト入力があります。私は複数の値を持っている場合は、それぞれの間にコンマを入れるコードがあります。

奇妙な部分はこれです:Firefoxので

、私は、MS Excelを行う行く5つの値をコピーして、テキスト入力コントロールに貼り付けることができます。私は貼り付けられた5つの値とその間のカンマを見ることができます。

Internet Explorerバージョン8では、MS Excelを実行して5つの値をコピーできますが、1つの値(最初の番号)のみがテキスト入力コントロールに貼り付けられます。

これは私のhtml

<fieldset> 
<label for="DBRIDs">RIDs</label><input type="text" id="DBRIDs" name="DBRIDs" onchange = "removespaces(this)"> 
</fieldset> 

ですこれは私のページヘッダ

<script language="javascript" type="text/javascript"> 
function removespaces(which) { 
str = which.value; 
str = str.replace (/\s|\n/g,","); // replace space or newline by commas 
document.myform.DBRIDs.value = str; 
} 

かなり基本的なもので、私のJavascriptです。私は何が欠けていますか?どのようにIEはFirefoxのように貼り付けることができない?私はテキストエリアは現在働いている使用してタイプミスがあった

EDIT

。私はコラムをコピーしてIEから貼り付けることができます

もちろん、(皮肉なことに)、それは新しい問題を導入しています:それは私のコンマを複製し、私はtextareaまたは私のJavascriptのためにそれが不明です。

答えて

1

テキストタイプの入力は、改行文字をサポートしません。そのため、IEはそれらを自動的に削除し、解析する機会は決してありません。あなたの最善の策は代わりにテキストエリアを使うことかもしれません。

代わりに、以下のような何かを行うことができますが、それは本当にただの回避策(onpasteイベントに注意してください)です。

<fieldset> 
<label for="DBRIDs">RIDs</label><input type="text" id="DBRIDs" name="DBRIDs" onchange="removespaces(this)" onpaste="handlePaste(this)"> 
</fieldset> 

などのjavascriptのために、何か:

function removespaces (which) { 
    var str = which.value; 
    str = str.replace(/\s|\n/g, ","); // replace space or newline by commas 
    which.value = str; 
} 

function handlePaste (which) { 
    var str = window.clipboardData.getData("Text");  
    str = str.replace(/\s|\n/g, ","); // replace space or newline by commas 
    which.value = str; 
    return false; // kill the paste event so you don't get duplicate data. 
} 

jsfiddleここに例を示します:http://jsfiddle.net/fordlover49/mJ7L3/

関連するメモ(さらなる問題を回避するのに役立ちます)では、要素をremovedpaces関数bu渡された要素を使用する代わりに、設定している要素をハードコーディングします。

+0

変更なし。 textinputをtextareaに変更するか、関数を追加します。 Firefox、Chrome、Safari、さらにOperaから問題なく貼り付けることができます! IEは無駄です。 – Chris

+0

問題のjsfiddleを作成する必要があります。私は上記のjsfiddleをIE8とIE9に貼り付けて使用することができ、うまくいきました。 – PriorityMark

+0

私はタイプミスがあったので、現在textareaを使用しています。私はIEから貼り付けることができますが、それは新しい問題を導入しています:それは私のコンマを複製します。 – Chris