2012-01-25 84 views
0

我建立了一个非常简单的应用程序使用PHP表单与一点的Javascript。从MS Excel复制粘贴失败与IE浏览器,但与火狐

在我的表单中,我有一个文本输入,我用它来运行数据库搜索。如果我有多个值,我有一段代码,每个代码之间都插入一个逗号。

怪异的一部分是这样的:

在Firefox中,我可以去做MS Excel中,复制5个值,并将其粘贴在文本输入控件。我可以看到粘贴的所有5个值和逗号之间。

在Internet Explorer版本8中,我可以去MS Excel中复制5个值,但只有一个值(第一个数字)被粘贴到文本输入控件中。

这是我的HTML

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

这是我的javascript在我的页面标题

<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; 
} 

相当基本的东西。我错过了什么? IE如何不能像Firefox一样粘贴?

编辑

我有一个错字所以现在使用textarea的工作。我可以复制一个列并粘贴它从IE

当然(讽刺),它引入了一个新问题:它复制我的逗号,我不清楚这是因为textarea或我的Javascript。

回答

1

具有文本类型的输入不支持换行符。因此,IE会自动剥离它们,而且你从来没有机会解析它们。你最好的选择可能是使用textarea。

或者,你可以不喜欢下面的,但它实际上只是一种变通方法(注意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 t硬编码你正在设置的元素,而不是使用传入的元素。

+0

没有变化。通过改变文本输入到textarea或者添加你的​​函数。无需Firefox,Chrome,Safari甚至Opera的问题即可粘贴! IE是不行的。 – Chris

+0

你可能需要为你的问题创建一个jsfiddle。我能够使用上面粘贴到IE8和IE9的jsfiddle,它工作正常。 – PriorityMark

+0

我有一个错字,所以使用textarea正在工作。我可以从IE粘贴,但它引入了一个新问题:它重复了我的逗号。 – Chris

相关问题