我使用带有一点Javascript的PHP表单构建了一个非常简单的应用程序。
在我的表单中,我有一个文本输入,我用它来运行数据库搜索。如果我有多个值,我有一些代码在每个值之间加一个逗号。
奇怪的是:
在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。
答案 0 :(得分: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/
在相关的说明中(尝试帮助您避免进一步的问题),您将元素传递给removespaces函数,但硬编码您正在设置的元素,而不是使用传入的元素。