Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从MS Excel复制粘贴在IE中失败,但可在Firefox中使用_Php_Javascript - Fatal编程技术网

Php 从MS Excel复制粘贴在IE中失败,但可在Firefox中使用

Php 从MS Excel复制粘贴在IE中失败,但可在Firefox中使用,php,javascript,Php,Javascript,我使用PHP表单和一些Javascript构建了一个非常简单的应用程序 在我的表单中,我有一个用于运行数据库搜索的文本输入。如果我有多个值,我有一段代码,在每个值之间加一个逗号 奇怪的是: 在Firefox中,我可以使用MS Excel,复制5个值并将它们粘贴到文本输入控件中。我可以看到所有5个值都被粘贴,中间有逗号 在InternetExplorerVersion8中,我可以使用MS Excel复制5个值,但只有一个值(第一个数字)粘贴到文本输入控件中 这是我的html <fieldse

我使用PHP表单和一些Javascript构建了一个非常简单的应用程序

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

奇怪的是:

在Firefox中,我可以使用MS Excel,复制5个值并将它们粘贴到文本输入控件中。我可以看到所有5个值都被粘贴,中间有逗号

在InternetExplorerVersion8中,我可以使用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;
}

函数RemoveSpace(其中){
str=哪个值;
str=str.replace(//\s |\n/g,“,”;//用逗号替换空格或换行符
document.myform.DBRIDs.value=str;
}
非常基本的东西。我错过了什么?为什么IE不能像Firefox那样粘贴

编辑


我有一个打字错误,所以现在可以使用textarea了。我可以从IE复制一列并粘贴它


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

带有文本类型的输入不支持新行字符。因此,即自动剥离它们,而您甚至没有机会解析它们。您最好的选择可能是使用文本区域

或者,您可以执行以下操作,但这实际上只是一种解决方法(请注意onpaste事件):

JSFIDLE示例如下:


在一个相关的注释中(为了尝试并帮助您避免进一步的问题),您将元素传递给removespaces函数,但硬编码要设置的元素,而不是使用传递的元素。

无更改。将textinput更改为textarea或添加函数。我能够从Firefox、Chrome、Safari甚至Opera粘贴而不出任何问题!IE是不行的。那么你可能需要创建一个JSFIDLE来解决你的问题。我能够使用上面的JSFIDLE粘贴到IE8和IE9中,效果很好。我有一个打字错误,所以现在可以使用textarea了。我可以从IE中粘贴,但它引入了一个新问题:它重复了我的逗号。更新你的正则表达式,现在你正在替换匹配的每个字符。添加
+
说明符(没有理由使用单独的
\n
)。尝试
str.replace(/\s+/g,”,”)
slice
方法添加到我的代码中,这样最后一个逗号就会像so
function removespaces(which){var str=which.value;str=str.replace(/\s+/g,”,”);var newStr=str slice(0,-1)which.value=newStr;}
<fieldset>
<label for="DBRIDs">RIDs</label><input type="text" id="DBRIDs" name="DBRIDs" onchange="removespaces(this)" onpaste="handlePaste(this)">
</fieldset>
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.
}