2015-11-02 62 views
2

我需要一個textarea在textarea值的開始和結尾包含一組雙引號。以下代碼的作用是將雙引號添加到字段的開始和結尾,但如果用戶輸入文本然後返回到字段,則可以添加多個雙引號集。我怎樣才能防止這一點? jQuery解決方案也是可以接受的。如何正確地將雙引號添加到Textarea

<textarea name="quoteName" id="quoteName" style="width:100%" rows="4" onChange="quotes();" autofocus></textarea> 

function quotes(){ 
    var quoteValueBefore = document.getElementById("quoteName").value; 
    var ensureQuotes = "\"" + quoteValueBefore + "\""; 
    document.getElementById("quoteName").value = ensureQuotes; 
} 
+1

你爲什麼想要報價?我個人認爲在服務器端應用它會更容易。無論哪種方式,您都可以檢查quoteName的第一個字符和最後一個字符,如果它等於不預先/附加它的引號。 – kyle

回答

0

檢查文本是否已經以引號開頭,是否已經以一個引號結尾。如果缺少任何一個,請添加它。

同時檢查長度> = 2,否則"將通過測試(與報價結束?檢查。開始報價?檢查。)

function quotes() { 
 
    var quoteValue = document.getElementById("quoteName").value; 
 

 
    if (!quoteValue.match(/^"/)) 
 
    quoteValue = '"' + quoteValue; 
 

 
    if (!quoteValue.match(/"$/)) 
 
    quoteValue += '"'; 
 

 
    if (quoteValue.length < 2) 
 
    quoteValue += '"'; 
 

 
    document.getElementById("quoteName").value = quoteValue; 
 
}
<textarea name="quoteName" id="quoteName" style="width:100%" rows="4" onChange="quotes();" autofocus></textarea>

+0

謝謝,保羅!如果我點擊文本框並鍵入test,它在離開字段時成功添加了雙引號,如果我回到字段並在第二次測試後鍵入test,它不會刪除中間的雙引號集。我怎樣才能防止呢?再次感謝。 例如:「測試」測試「 –

+0

您可以在其他任何事情之前執行'quoteValue.replace(/」/ g,「」);'然後如果某人*想要*引號的值,該怎麼辦?如果你需要服務器端或其他地方的引號,爲什麼不把它們添加到那裏呢? –

0

function checkQuotes(id) { 
 
    str = document.getElementById(id).value; 
 
    if (str[0] != '"') { 
 
    str = '"'.concat(str); 
 
    } 
 
    if (str[str.length - 1] != '"') { 
 
    str = str.concat('"') 
 
    } 
 
    return str 
 
} 
 

 
function quotes() { 
 
    withQuotes = checkQuotes("quoteName"); 
 
    document.getElementById("quoteName").value = withQuotes 
 
}
<textarea name="quoteName" id="quoteName" style="width:100%" rows="4" onchange="quotes()">testing the quotes feature</textarea>

這個片段將檢查第一characte r是一個引號,如果不是,它會預先設定它。它還會檢查最後一個字符是否是一個引號,如果不是則會附加引號。這可能不是最友好的用戶界面解決方案,並且我建議通過CSS添加它,如果您將它用於顯示目的,或者使用PHP或您正在做的後端表單提交。

相關問題