2015-06-04 53 views
0

我想切换隐藏的输入元素,当select元素有一个特定的选项。当我收到变量q的提醒时,q没有输入,但变量put对于为什么.replace()移除整个字符串我感到非常困惑。.replace()工作不像它应该

function hiddeninput(choice, put) { 
    var q = put.replace(/./g, "").replace(/#/g, ""); 
    alert(put + "," + q);//alerts .other, 
    if (choice === q) { 
     $(put).show(); 
    } else { 
     $(put).hide(); 
    } 
} 

任何帮助,将不胜感激。在过去的几天里,JSfiddle一直非常麻烦,我以前的一些工作小提琴已经停止工作,也许这可能是原因。

+1

你还可以发布你的HTML代码吗? –

+1

是否要替换'“。”'和'“#”'?你的'/./ g'正则表达式匹配所有字符,你应该在你的正则表达式中转义'\ .'。 – Aprian

+0

如果'put =“.abc#123”;'?我可以问你的预期输出是什么吗? – Aprian

回答

0

你知道.是匹配任何字符吗?

您需要使用\来避开它,所以它只会匹配.而不是任何字符。

var q = put.replace(/\./g, "").replace(/#/g, ""); 

,而不是做两个替换,你可以做一个

var q = put.replace(/[.#]/g,""); 
+0

谢谢,非常有用,特别是多字符替换。现在的代码有效, – Grandmaster27971

0

在正则表达式 “”将匹配任何角色。你有:put.replace(/./g, "");。这意味着你用任何东西来替换任何角色的每场比赛,这将不会导致任何结果。

如果要匹配一个点,则需要使用反斜杠来跳过特殊字符:put.replace(/\./g, "");

我不确定这是否会完全解决您的问题,但对我来说,这似乎是一个意想不到的事情。

+0

谢谢,我的代码现在可以工作。编码是我的兴趣之一,因为我不是专业人士,肯定会有很多我没有学到的东西,这恰好是其中的一种。 – Grandmaster27971

+0

我很乐意帮助:)如果这些答案中的任何一个都有助于解决您的问题,那么您应该将其中一个标记为答案^ _ ^否则,如果您需要更多信息,请编辑问题并让我们知道我们可以如何进一步帮助。 –