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