2015-11-20 34 views
0

請原諒我的無知。當我在文本框外單擊時,我想始終保留輸入框中的當前值(通過更改默認值提供的值)。但是,如果修改後我再次單擊文本框,然後單擊文本框外,以下代碼返回到默認值。但我想始終在文本框中保留最新的值。onblur沒有返回最新值

也許我必須在區域this.value=' <?php echo "$r1[MAJORS1]" ?>';進行更改,但不理解如何做到這一點。

任何幫助,請

onfocus="if(this.value!=''){ this.value=''; this.style.color='#000';}" 
onblur="if(this.value==''){ this.value='<?php echo "$r1[MAJORS1]"?>'; this.style.color='#000';}" 
+1

'<?php echo「$ r1 [MAJORS1]」?>'在PHP腳本的服務器端運行,並生成具有固定值的JavaScript。您需要創建一個單獨的JavaScript變量,在'onfocus'函數中將當前值寫入它,然後將其分配到onblur中的'this.value'中。 –

回答

1

我相信你正在尋找:

<input type="text" 
data-value="<?php echo htmlentities("$r1[MAJORS1]"); ?>" 
placeholder="<?php echo htmlentities("$r1[MAJORS1]"); ?>" 
onfocus="if(this.value!=''){ 
    this.value=''; 
    this.style.color='#000'; 
    this.setAttribute('placeholder',this.getAttribute('data-value')); 
}" 
onblur="if(this.value==''){ 
    this.value=this.getAttribute('data-value'); 
    this.style.color='#000'; 
}else{ 
    this.setAttribute('data-value',this.value); 
}" 
value="<?php echo htmlentities("$r1[MAJORS1]"); ?>"> 

不完全是漂亮,但。與用戶瀏覽器的默認功能混淆有混淆的傾向。然而,我相信我的佔位符用法會讓用戶不會感到困惑,因爲他們的輸入將會回覆到佔位符讀取的任何內容。

見我的jsfiddle這裏:http://jsfiddle.net/3Lvs77bv/

我不知道,但知道MAJORS1應該是在你$r1數組常量或鍵,雖然。如果它是一個鍵,請確保引用它來防止警告,否則PHP會認爲它是一個常量。但是,無論如何,如果常量沒有被定義並且將它作爲數組中的鍵,PHP將會回退,儘管會產生警告。

編輯:
如果你想允許空值,您既可以添加一個按鈕來清除像這樣的領域:

http://jsfiddle.net/3Lvs77bv/1/

或者,我會建議,簡單地擺脫你試圖編碼的所有混亂,這在功能上影響用戶的默認瀏覽器,並且當場被聚焦時簡單地使用this.select()代替:

http://jsfiddle.net/3Lvs77bv/2/

+0

這正是我正在尋找的。 – Baptu

+0

這種方法的一個缺點是我們不能將輸入框留空。如何克服它? – Baptu

+0

這就是你想要克服的,不是嗎?也許在旁邊放一個「清除」按鈕,點擊清除該字段及其歷史記錄。 – Ultimater