iT邦幫忙

0

javascript 清空

小斑 2018-05-22 16:12:2510313 瀏覽
  • 分享至 

  • xImage

下圖是後端回傳的內容
會顯示在表格的teatarea中
https://ithelp.ithome.com.tw/upload/images/20180522/20106496FJwrP7ExbJ.jpg

點擊紅字後的圖示如下
https://ithelp.ithome.com.tw/upload/images/20180522/20106496xsWTVYtWl8.jpg

回傳內容的寫法如下

echo "<font color='red' id='red' onclick='clear()'><strong>重新編輯</strong></font>";

希望點擊紅字時會清空textarea讓使用者可直接重新編輯

前端寫法如下

function clear()
{
	document.getElementById("red").value = '';
}

但仍無法清空,請教一下大家......謝謝/images/emoticon/emoticon41.gif

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
wingkawa
iT邦新手 3 級 ‧ 2018-05-22 16:38:53

點擊「重新編輯」觸發clear()清空textarea?
那你的clear()要指定的ID必須是textarea的ID

function clear()
{
	document.getElementById("這裡是textarea的ID").value = '';
}
看更多先前的回應...收起先前的回應...
小斑 iT邦新手 3 級 ‧ 2018-05-22 16:55:01 檢舉

是的,點擊「重新編輯」觸發clear()清空textarea。

但我的textarea是使用jeditable套件,裡面好像沒有可以給id的參數?還是請問有建議其他方法嗎?謝謝

wingkawa iT邦新手 3 級 ‧ 2018-05-22 17:01:17 檢舉

建議先去看看jeditable的文件,可能本來就有提供clean()或reset()之類的方法也說不定

或是可以自己hack,用開發者工具找一下這個textarea的id是什麼
沒有id也沒有class的話,不妨考慮自己在外面包一層div,你就可以抓到div裡面的textarea,類似這樣

var container = document.getElementById('outer_div');
// 這邊有可能會抓到複數個有符合條件的tag
var innerTextareas = container.getElementsByTagName('textarea');
// 視情況再做判斷,或肯定只有一個就是[0]
innerTextareas[0].value = '';
小斑 iT邦新手 3 級 ‧ 2018-05-22 17:20:49 檢舉

不好意思,有id這個參數~

參考您的方式把id給textare但目前還無法加上去

我改成用name清空如下

function clear()
{
	document.getElementsByName("value").value = "";
}

html如下
https://ithelp.ithome.com.tw/upload/images/20180522/201064965qsHCh1b6O.jpg

但還是無法成功,請問↑這個方式哪裡有錯誤嗎?謝謝

wingkawa iT邦新手 3 級 ‧ 2018-05-22 17:28:40 檢舉
  1. 可能不只一個name="value"
  2. getElementsByName()從名稱上也可以看出來,是複數,用console.log()看一下實際究竟抓到什麼東西吧,沒意外是一個array,你得給他正確的index才會取到你要的東西
function clear()
{
    var textareaArray = document.getElementsByName("value");
	textareaArray[0].value = "";
}
0

應該用textarea的id, 不是font的id

建議使用jquery會比較容易做,只需要兩個步驟

  1. 引入jquery
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  1. 清空teatarea
 <script>
	$(function () {
		$(table).on('click', '#red', function() { 
			$(this).find('teatarea').val('');				
		});
	});
</script>
看更多先前的回應...收起先前的回應...
小斑 iT邦新手 3 級 ‧ 2018-05-22 16:55:49 檢舉

謝謝~但我的textarea是使用jeditable套件,裡面好像沒有可以給id的參數?還是請問有建議其他方法嗎?謝謝

有問題再說~

小斑 iT邦新手 3 級 ‧ 2018-05-22 17:58:25 檢舉

https://ithelp.ithome.com.tw/upload/images/20180522/20106496jKX3xvDCg9.jpg
謝謝

froce iT邦大師 1 級 ‧ 2018-05-23 09:20:27 檢舉

https://appelsiini.net/projects/jeditable/
1.有給id的參數啊。
(String) id: Name of the submitted parameter which contains content id. Default is id.

2.看來jeditable也是用jQ,既然載入了建議就都用jQ來寫。

用jquery就不用管id了,直接套用上面的程式,應該可以執行

小斑 iT邦新手 3 級 ‧ 2018-05-23 11:02:33 檢舉

謝謝,參考您的方式修改如下,但還是不行,請幫忙看看......(感激)

回傳內容的寫法如下

echo "<font color='red' onclick='clear()'><strong>重新編輯</strong></font>";

清空teatarea

$(function clear() {
	$(table).on('click', '#red', function() { 
		$(this).find('teatarea').val('');
	});
});
wingkawa iT邦新手 3 級 ‧ 2018-05-23 11:15:23 檢舉

teatarea (X)
textarea (O)

小斑 iT邦新手 3 級 ‧ 2018-05-23 11:24:52 檢舉

還是不行@@

測試過應該可以了
onclick不需要了

echo "<font color='red'><strong>重新編輯</strong></font>";

html

<table>
<tr>
  <td>
    <font id="red" color='red'><strong>重新編輯</strong></font>
    <textarea>
      test      
    </textarea>    
  </td>
</tr>
</table>

另外js改成

$(function clear() {
	$(table).on('click', 'font', function() { 
		$(this).find('textarea').val('');
	});
});
froce iT邦大師 1 級 ‧ 2018-05-23 11:44:31 檢舉

1.$(選擇子).on("事件"...)的寫法,不需要在html裡加上 onclick=
2.你又用一個function包,然後打包成jQ,這樣當然不會成功。
3.「font」在html5已經被廢棄了,建議不要使用。
4.請參閱jQuery的css selector,並搞懂他。
5.先去惡補一下jQ吧?

echo "<span class='red'><strong>重新編輯</strong></span>";

// css:
<style>
 .red{color: red;}
</style>

// js:
<script>
 $(".red").click(function(){
     $(this).text("");
 });
</script>
0
小魚
iT邦大師 1 級 ‧ 2018-05-22 19:30:30
document.getElementsByName("value")[0].innerText = "";

我剛試過用innerText可以,
value也可以,
另外有一個問題,
clear似乎是保留字,
我用clear不行,
另外隨便取一個名字就可以了。

我要發表回答

立即登入回答