2012-11-23 55 views
3

到目前为止,我this jsfiddle编辑文本用户输入文本框

<p>Click the button to remove http:// and www. from input box belove below:</p> 

<textarea id="demo" name="comments" cols="25" rows="5"> 
    http://www.google.com 
</textarea><br> 
<input type="submit" value="Submit" button onclick="myFunction(),myFunction2()" /> 
</form> 

<script> 
function myFunction() 
{ 
    var str=document.getElementById("demo").innerHTML; 
    var n=str.replace("http://",""); 
    document.getElementById("demo").innerHTML=n; 
} 

function myFunction2() 
{ 
    var str=document.getElementById("demo").innerHTML; 
    var m=str.replace("www.",""); 
    document.getElementById("demo").innerHTML=m; 
} 
</script>​ 

它正常工作与文本输入pre,但它不会改变提交的文本。 我确定有一个简单的答案,我只是新手,无法解决或找到答案。

回答

3

您需要使用textarea.value而不是.innerHTML

.innerHTML只查看元素中生成的HTML。如果用户键入新内容,则源不会更改。

但是,值的作用:

http://jsfiddle.net/AbSh2/12/

一对夫妇的其他指针:

  • 你不需要两个函数

    document.getElementById("demo").value = ... 
    

    在你的提琴修复做这个操作,你可以看到它可以在一个中完成。

  • 你可以使用type='button',而不是提交,因为JavaScript不关心表单提交(只有服务器,接收POST和GET数据上的问题。JavaScript不能)

,您可以简化你的功能更进一步,不保存字符串所有的地方:

function myFunction() { 
    var str=document.getElementById("demo").value; 
    var n=str.replace("http://",""); 
    var m=n.replace("www.",""); 
    document.getElementById("demo").value=m; 
} 

工作正常。你甚至可以做

function myFunction() { 
    document.getElementById("demo").value = 
     document.getElementById("demo").value.replace("http://","").replace("www.",""); 
} 

而是变得有点混乱IMO,所以应该是学习的目的只有:)

+0

砸非常感谢!也许这是我想学的东西:D,当你知道如何时,看起来很容易。 – Chumbawamba

+1

是的,没问题,欢迎来到SO。如果这里的答案解决了您的问题,那么社区会赞赏您是否将其标记为“已接受”。 :) – Ben

+0

做到了,非常感谢 – Chumbawamba