2015-06-04 66 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

我很樂意幫助:)如果這些答案中的任何一個都有助於解決您的問題,那麼您應該將其中一個標記爲答案^ _ ^否則,如果您需要更多信息,請編輯問題並讓我們知道我們可以如何進一步幫助。 –