撤消简单的javascript事件 - 从文本框中删除花括号

时间:2012-08-02 19:17:51

标签: javascript textbox

我正在尝试使用javascript在textbox值周围添加和删除花括号。

到目前为止,我所做的是正确添加它们但我在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" />

3 个答案:

答案 0 :(得分: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 + "}";
    } 
}

答案 1 :(得分:1)

您是否也希望摆脱用户输入的任何花括号(或者只是不必担心它)?如果是这样,一些简单的正则表达式应该可以工作:

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

答案 2 :(得分: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('');

这种操作的效率可能不是最好的,但如果你正在使用小字符串,那可能无关紧要。