2012-08-02 40 views
2

我试图添加和删除javascript值附近的大括号。撤消简单的JavaScript事件 - 从文本框中删除大括号

我到目前为止所做的是正确添加它们,但我不知道如何在uncheck上删除它们。这里是我的代码:

<script> 

Toggle(); 
function Toggle(){ 
if (document.form1.icd.checked){ 
document.form1.amln.value= "{" + document.form1.amln.value + "}"; 
} 


} 
</script> 

<input type="checkbox" name="icd" value="icd" onClick="Toggle();" /> 

<input type="text" name="amln" id="amln" /> 
+0

在哪里结合起来你去除大括号?有没有从你的代码中丢失的'else'语句? – jackwanders 2012-08-02 19:20:31

回答

2

比赛开始和结束

var tb = document.form1.amln; 
tb.value = tb.value.replace(/[{}]/g,"") 

删除任何{和}

var tb = document.form1.amln; 
tb.value = tb.value.replace(/[{}]/g,""); 

与检查

function addBraces() { 
    var fm = document.form1, 
     tb = fm.amln; 
    tb.value = tb.value.replace(/[{}]/g,""); //doing it here in case {} already exist 
    if (fm.icd.checked) { 
     tb.value = "{" + tb.value + "}"; 
    } 
} 
+0

完美!谢谢你,如果我可以的话,我会+1你 – 2012-08-02 19:32:51

+1

谢谢你想要upvote最好的答案@Jeff - 如果可以,我会再次给你+1。欢迎来到这里:) – 2012-08-02 19:34:50

1

你也想摆脱任何大括号的用户输入的(或只是不担心它)?如果是这样,几个简单的正则表达式应该工作:

var tb = document.form1.amln; 
tb.value = tb.value.replace(/\{/g).replace(/\}/g); 
+0

为什么两个替换语句? – epascarello 2012-08-02 19:22:35

+0

@epascarello - 我可能很疯狂,但不会/ \ {\} /一个接一个地匹配两个大括号?我认为两个替代将是最简单的。 – 2012-08-02 19:24:33

+3

'tb.value.replace(/^\ {| \} $/g,“”)'使用OR的力量。如果你不关心开始和结束:'替换(/ [{}]/g,“”)' – epascarello 2012-08-02 19:25:04

0

要卸下支架,使用:

function Toggle() { 
    var form = document.form1; 
    var field = form.amln; 

    if (form.icd.checked) { 
     field.value = "{" + field.value + "}"; 
    } else { 
     field.value = field.value.replace(/(^\{|\}*$)/g, ''); 
    } 
} 

如果想要,只除去第一各开头或结尾的支柱,你可能需要做更复杂的东西。

field.replace(/\{/, '').split('').reverse().join('').replace(/\}/, '').split('').reverse().join(''); 

这种操作的效率可能不是最好的,但如果你使用的是小字符串,那可能没关系。